如何避免“iterator not incrementable”错误

 我来答
匿名用户
2017-11-14
展开全部

你好,关于如何避免“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();
}

希望对你有帮助

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式