C++ 在C++;,弹出调试断言失败窗口&;我得到向量迭代器不兼容的错误运行时
我见过一些SO链接,其中出现了类似的错误,建议在复制向量时使用const引用向量(通过值),但在我的场景中,我使用的是相同的向量(没有通过值)。但是看到这个问题。下面是代码,我看到了错误 “调试断言失败”窗口弹出&我获取向量迭代器 不相容错误 在运行时,当 被击中了C++ 在C++;,弹出调试断言失败窗口&;我得到向量迭代器不兼容的错误运行时,c++,c++11,vector,iterator,incompatibletypeerror,C++,C++11,Vector,Iterator,Incompatibletypeerror,我见过一些SO链接,其中出现了类似的错误,建议在复制向量时使用const引用向量(通过值),但在我的场景中,我使用的是相同的向量(没有通过值)。但是看到这个问题。下面是代码,我看到了错误 “调试断言失败”窗口弹出&我获取向量迭代器 不相容错误 在运行时,当 被击中了 typedef vector<vector<string> tableDataType; vector<tableDataType::Iterator> tabTypeIterVector; table
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++)
{
}
}
typedef vector看起来您正在比较对应于不同vector
对象的两个迭代器
比如说,
std::vector<int> a(5);
std::vector<int> b(5);
auto iter_a = a.begin();
auto iter_b = b.begin();
std::向量a(5);
std::载体b(5);
自动iter_a=a.begin();
自动iter_b=b.开始();
即使iter_a
和iter_b
属于同一类型,也不允许进行比较。使用iter\u a==iter\u b
或iter\u a!=iter_b
是未定义行为的原因
从你的帖子中不清楚为什么需要比较迭代器,但是你必须重新考虑你的实现策略。看起来你在比较两个迭代器,它们对应于不同的向量
对象
比如说,
std::vector<int> a(5);
std::vector<int> b(5);
auto iter_a = a.begin();
auto iter_b = b.begin();
std::向量a(5);
std::载体b(5);
自动iter_a=a.begin();
自动iter_b=b.开始();
即使iter_a
和iter_b
属于同一类型,也不允许进行比较。使用iter\u a==iter\u b
或iter\u a!=iter_b
是未定义行为的原因
从您的帖子中不清楚为什么需要比较迭代器,但您必须重新考虑您的实现策略。谢谢。我纠正了我的错误,但仍然注意到同样的错误。在这里提出了一个不同的问题,谢谢。我纠正了我的错误,但仍然注意到同样的错误。在这里提出了一个不同的问题