【发布时间】:2012-01-15 08:04:45
【问题描述】:
我有一个带有 std::vector 数据成员的类,例如
class foo{
public:
const std::vector<int> getVec(){return myVec;} //other stuff omitted
private:
std::vector<int> myVec;
};
现在在我的主要代码的某些部分,我尝试像这样遍历向量:
std::vector<int>::const_iterator i = myFoo.getVec().begin();
while( i != myFoo.getVec().end())
{
//do stuff
++i;
}
当我到达这个循环时,我得到了上述错误。
【问题讨论】:
-
你正在返回一个向量的副本,可能你想返回一个
const std::vector<int>& -
您真的要返回您的向量的副本吗?
-
请不要从函数返回 const 值,因为它会抑制 C++11 移动语义。
-
@TomalakGeret'kal 我认为标题中提到了错误。
-
@Seth:我从来没有见过一个错误,它本身就是“向量迭代器不兼容”