C++,弹出调试断言失败窗口,我得到矢量迭代器不兼容的错误运行时
In C++, Debug assertion failed window pops up & I get vector iterators incompatible error runtime
我看到过一些SO链接,其中出现了类似的错误,并且建议在复制向量时使用常量引用(按值传递(,但在我的场景中,我使用相同的向量(没有按值传递(。但是看到这个问题。 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
是导致未定义行为的原因。
从您的帖子中不清楚为什么您需要比较迭代器,但您必须重新考虑您的实施策略。
相关文章:
- 为什么范围算法与 std 的迭代器不兼容?
- forward_list迭代器不兼容
- 向量迭代器不兼容的错误,用于保存另一个向量的迭代器的向量
- C++,弹出调试断言失败窗口,我得到矢量迭代器不兼容的错误运行时
- 当我发生碰撞检测时,矢量迭代器不兼容
- 迭代器不兼容错误
- 字符串迭代器不兼容错误,当我将字符串转换为矢量<byte>时
- 表达式:字符串迭代器不兼容,调用"SetDllDirectory"
- 如何消除"矢量迭代器不兼容"错误?
- 映射/集合迭代器不兼容-检查对象是否在映射中
- 映射/集合迭代器不兼容-检查映射中是否存在键
- 迭代器不兼容的原因
- 矢量迭代器不兼容:DEBUG
- 矢量迭代器不兼容矢量行251
- 矢量迭代器不兼容..但是为什么
- 列出迭代器不兼容断言失败
- C++ STL 向量迭代器不兼容
- 矢量迭代器不兼容:运行时错误
- C++linux获取向量迭代器不兼容
- 获取错误:矢量迭代器不兼容