如何避免“iterator not incrementable”错误

如题所述

你好,关于如何避免“iterator not incrementable”错误:

在erase元素的时候,应该注意迭代器越界的问题。

for (auto it = vec.begin(); it != vec.end(); ){
    if (*it == 2)  
        it = vec.erase(it);
    else
        ++it;

在进行迭代器遍历容器时,原来的容器不应该再继续压入任何元素了,不然容器的长度变了,迭代器就失效了。
补救的方法是,每次压入vector时,都把迭代器重置

for (auto it = vec.begin(); it != vec.end(); ++it){
    vec.push_back(1);
    it = vec.begin();
}

希望对你有帮助

温馨提示:内容为网友见解,仅供参考
无其他回答

如何避免“iterator not incrementable”错误
你好,关于如何避免“iterator not incrementable”错误:在erase元素的时候,应该注意迭代器越界的问题。for (auto it = vec.begin(); it != vec.end(); ){ if (*it == 2) it = vec.erase(it); else ++it;在进行迭代器遍历容器时,原来的容器不应该再继续压入任何元素了,不...

如何避免“iterator not incrementable”错误
删除元素么? 删除时,不要用 for (itor=aaa.begin();itor!=aaa.end();itor++) 之类的操作,这会有问题的。

如何避免“iterator not incrementable”错误
改成:for ( std::list<*>::iterator it =ObjList.begin(); it != ObjList.end(); ){ If((*it)->regin == CheckRegin ){ it= ObjList.earse(it);} else { ++it;} }

如何避免“iterator not incrementable”错误
在VS2010启动的情况下,可以看到Debug游标停在对一个++Iterator的操作上。因为是调试版本,所以代码中额外添加了对Iterator的检查部分,具体信息是:”list iterator notincrementable”。这个程序原本是在03,04年左右写的,结构还是比较清晰,模块划分也是清楚地按照功能进行,所以了解代码功能还是比较方便的。...

如何避免“iterator not incrementable”错误
it = vec.erase(it);else ++it;在进行迭代器遍历容器时,原来的容器不应该再继续压入任何元素了,不然容器的长度变了,迭代器就失效了。补救的方法是,每次压入vector时,都把迭代器重置 for (auto it = vec.begin(); it != vec.end(); ++it){ vec.push_back(1);it = vec.begin();}...

如何避免“iterator not incrementable”错误
但是程序运行时,偶尔会报告错误。在VS2010启动的情况下,可以看到Debug游标停在对一个++Iterator的操作上。因为是调试版本,所以代码中额外添加了对Iterator的检查部分,具体信息是:”list iterator notincrementable”。这个程序原本是在03,04年左右写的,结构还是比较清晰,模块划分也是清楚地按照功能进行,...

如何避免“iterator not incrementable”错误
删除元素么? 删除时,不要用 for (itor=aaa.begin();itor!=aaa.end();itor++) 之类的操作,这会有问题的。

如何避免“iterator not incrementable”错误
iterator not incrementable 迭代器不定义 重点词汇释义 iterator迭代器,迭代程序

如何避免“iterator not incrementable”错误
iterator not incrementable 迭代器不增量

如何避免“iterator not incrementable”错误
iterator not incrementable 迭代器没有增量

相似回答
大家正在搜