【问题标题】:const and STL containersconst 和 STL 容器
【发布时间】:2011-04-13 00:17:35
【问题描述】:
以下std::vector 代码出错
int main()
{
std::vector<const double> VectDouble;
VectDouble.push_back(2.34);
VectDouble.push_back(2.33);
VectDouble.push_back(2.32);
for(std::vector<const double> VectDouble::iterator i=VectDouble.begin();i!=VectDouble.end();++i)
std::cout<<*i;
}
【问题讨论】:
标签:
c++
templates
vector
stl
【解决方案1】:
您的 STL 容器元素应该是可分配和可复制构造的。
const 阻止它成为assignable。删除const 并再次尝试编译您的代码。
还将std::vector<double> VectDouble::iterator 更改为
std::vector<double>::iterator
【解决方案2】:
VectDouble 是一个变量名。
改变
for(std::vector<const double> VectDouble::iterator i=VectDouble.begin();i!=VectDouble.end();++i)
到
for(std::vector<const double>::iterator i=VectDouble.begin();i!=VectDouble.end();++i)
或
typedef std::vector<const double> vector_t;
for(vector_t::iterator i=VectDouble.begin();i!=VectDouble.end();++i)