[英]In C++, Debug assertion failed window pops up & I get vector iterators incompatible error runtime
我已经看到一些SO链接,其中看到了类似的错误,并且在复制矢量(按值传递)时建议使用const引用矢量,但是在我的场景中,我使用的是相同的矢量(不按值传递) 。 但是看到这个问题。 WRT下面的代码,我看到错误
调试断言失败窗口弹出并出现向量迭代器不兼容错误
在运行时当行
itloop !=-endIter
被击中。
typedef vector<vector<string> tableDataType;
vector<tableDataType::Iterator> tabTypeIterVector;
tableDataType table;
FillRows(vector<string> vstr)
{
table.push_back(vstr);
if(some_condition_satisfied_for_this_row())
{
tableDataType::Iterator rowIT = table.end();
tabTypeIterVector.push_back(rowIT);
}
}
In another function:
AccessTableIteratorsVector()
{
auto startIter = table.begin();
auto endIter = tabTypeIterVector[0];
for(auto itloop=startIter; itloop !=-endIter;itloop++)
{
}
}
似乎您正在比较对应于不同vector
对象的两个迭代器。
例如,
std::vector<int> a(5);
std::vector<int> b(5);
auto iter_a = a.begin();
auto iter_b = b.begin();
即使iter_a
和iter_b
是同一类型,也不允许进行比较。 使用iter_a == iter_b
或iter_a != iter_b
会导致未定义的行为。
从您的帖子中还不清楚,为什么需要比较迭代器,但是您必须重新考虑实现策略。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.