C迭代器问题

我正在使用C上的迭代器,我在这里遇到了一些麻烦.它在行interIterator上的表达式(this-> _Has_container())上说“Debug Assertion Failed”.
距离列表是矢量<矢量< distanceNode>取代.我做错了什么?

vector< vector<distanceNode> >::iterator externIterator = distanceList.begin();

   while (externIterator != distanceList.end()) {

    vector<distanceNode>::iterator interIterator = externIterator->begin();

        while (interIterator != externIterator->end()){

          if (interIterator->getReference() == tmp){

     //remove element pointed by interIterator
     externIterator->erase(interIterator);             

          } // if
    interIterator++;
  } // while
  externIterator++;
   } // while

解决方法

vector的erase()返回一个新的迭代器到下一个元素.擦除元素和元素失效后的所有迭代器.但是,您的循环忽略了这一点,并继续使用interIterator.

您的代码应如下所示:

if (condition)
    interIterator = externIterator->erase(interIterator);
else
    ++interIterator;  // (generally better practice to use pre-increment)

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...