Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C++;,弹出调试断言失败窗口&;我得到向量迭代器不兼容的错误运行时_C++_C++11_Vector_Iterator_Incompatibletypeerror - Fatal编程技术网

C++ 在C++;,弹出调试断言失败窗口&;我得到向量迭代器不兼容的错误运行时

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

我见过一些SO链接,其中出现了类似的错误,建议在复制向量时使用const引用向量(通过值),但在我的场景中,我使用的是相同的向量(没有通过值)。但是看到这个问题。下面是代码,我看到了错误

“调试断言失败”窗口弹出&我获取向量迭代器 不相容错误

在运行时,当

被击中了

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
是未定义行为的原因


从您的帖子中不清楚为什么需要比较迭代器,但您必须重新考虑您的实现策略。

谢谢。我纠正了我的错误,但仍然注意到同样的错误。在这里提出了一个不同的问题,谢谢。我纠正了我的错误,但仍然注意到同样的错误。在这里提出了一个不同的问题