vector iterator not incrementable

情况1:

  1. int _tmain(int argc, _TCHAR* argv[])
  2. {
  3.     std::vector<int> aa = { 123, 1, 2, 44, 122, 87 };
  4.     for (const auto &child : aa)
  5.     {
  6.         std::cout << child << std::endl;
  7.         aa.push_back(112);
  8.         //aa.pop_back();
  9.     }
  10.     return 0;
  11. }

    上面这段代码就会出现 vector iterator not incrementable 这个错误,所以切记,不可以在 for (const auto &child : aa) 循环中去改变这个vector,不论是 push 还是 pop。


    情况2:

    1. int _tmain(int argc, _TCHAR* argv[])
    2. {
    3.     std::vector<int> aa = { 123, 1, 2, 44, 122, 87 };
    4.     for(iter = aa.begin(); iter != aa.end(); ++iter){ 
    5.         if(122 == *iter){             
    6.             aa.erase(iter);
    7.         }   
    8.     }
    9.     return 0;
    10. }

      如果在程序中对 vector 中的元素做了修改,添加或者删除元素之后,迭代器就会失效,这时候就不要使用迭代器了。

      • 1
        点赞
      • 0
        收藏
        觉得还不错? 一键收藏
      • 0
        评论

      “相关推荐”对你有帮助么?

      • 非常没帮助
      • 没帮助
      • 一般
      • 有帮助
      • 非常有帮助
      提交
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值