比如我们现在有如下代码:

map<string,int>tmp;
for(auto i = tmp.begin();i!=tmp.end();++i)
{for(int j = 0;j<tmp->first;++j){if(tmp->first[j] == 55){tmp.erase(i);break;}}
}

以上代码看上去没有啥错误!但当执行这一段时,会出错!这是由于在map中删除某一元素时,相应指向的迭代器就会失效,不能再进行相加操作!但是我们可以利用性质:erase之后返回指向删除元素之后元素的迭代器!

修改之后:

map<string,int>tmp;
auto i = tmp.begin();
while(i!=tmp.end())
{for(int j = 0;j<tmp->first;++j){if(tmp->first[j] == 10){i = tmp.erase(i); //erase之后返回指向删除元素之后元素的迭代器i--; //这里要是不-1的话,跳出这个循环后又要+1,就会使得i加了2!!!break;}}i++;
}

以上情况特别适合两个循环嵌套的情况!要熟练这种操作!!!

map:erase删除元素之后迭代器失效的问题!(iterator not incrementable)相关推荐

  1. 容器删除元素后迭代器失效_STL 4: STL之容器:选择时机,删除元素,迭代器失效...

    一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.sl ...

  2. C++ Primer:vector删除元素时迭代器失效问题

    提示:以下所有程序是使用MinGW编译运行的.若使用VS的MSVC运行,程序会报错,因为MSVC无法解引用失效迭代器或尾后迭代器. 1. 删除尾元素 #include <iostream> ...

  3. 容器删除元素后迭代器失效_使用迭代器遍历容器元素

    迭代器为我们提供了统一的遍历容器的方式. 1.Iterator源码分析 public Iterator<E> iterator() {return new Itr(); }private ...

  4. vector用erase删除元素时,为什么被删元素的析构函数会被调用更多次?

    vector用erase删除元素时,为什么被删元素的析构函数会被调用更多次? 分类: C++2011-08-18 14:55 720人阅读 评论(0) 收藏 举报 vectoriteratorexce ...

  5. C++容器删除数据时迭代器失效

    我们在做c++容器的元素删除时,需要使用迭代器,并且调用erase方法时,必须传入迭代器的指针位置, 所以在删除操作进行判断满足条件删除时,将变得较为麻烦. 项目中通用解决思路一: 遍历vector向 ...

  6. 向顺序容器vector、string、deque、list、forward_list中插入\删除元素时迭代器、引用、指针的变化

    1.插入元素 (1)对于vector.string来说,当在某个位置插入元素后,如果内存空间重新分配,则指向任何位置的迭代器.指针.引用都会失效: 如果内存空间没有重新分配,则在插入位置之前的迭代器. ...

  7. 【C#懒蛋编程——5分钟经验分享】01逆序遍历删除,防止迭代器失效

    因为篇幅很短,所以尝试全文字写法.几分钟看完的文字也没必要用十几分钟写完是吧. foreach遍历List操作很方便,这节省了部分[]取数据和下标计算的代码.写起来很简洁.但是如果是遍历删除的话,你会 ...

  8. java迭代器删除元素_java迭代器中删除元素的操作

    我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的 ...

  9. java迭代器删除元素_java迭代器中删除元素的实例操作详解

    java迭代器中删除元素的实例操作详解 2021-01-21 16:40:08 我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删 ...

最新文章

  1. Virtex-6系列FPGA的CLB
  2. 使用pytorch从零开始实现YOLO-V3目标检测算法 (二)
  3. (转)基于svnserve的服务器,权限文件authz配置的常见问题及解答
  4. 3点 刚体运动 opencv_模态法动力学分析中的刚体模态
  5. spssχ2检验_卡方检验与单因素logistic回归分析结果比较
  6. Ubuntu10.10下ftp的安装配置
  7. 销售自用计算机损益计入哪里,用友创业者4.0下的ERP沙盘模拟经营规则中,销售所需紧急采购产品时,按成品直接成本的(    )倍直接扣除现金,付款即到货,紧急采购多付出的成本计入费用表损失项。...
  8. 破解版editPlus
  9. C语言信息学一本通题库答案,信息学奥赛一本通(C++版)在线评测系统
  10. 打印网页中的指定内容
  11. 设计模式系列之「责任链模式」
  12. 怎么做网站推广-网站推广100种方法
  13. android intent传文件,android如何用intent跳转到文件管理器
  14. Python中tkinter模块的学习记录(一)
  15. golang的dep和vender
  16. android系统 PowerManager深入分析(非常详细)
  17. 视频批量添加滚动字幕,我1分钟就搞定了
  18. Mac常用的五款思维导图软件,中文版推荐
  19. 对LMAX架构以及Event Sourcing模式的一些新思考和问题的记录
  20. SQL server身份验证

热门文章

  1. yo 搭建angular应用
  2. [LintCode] Fast Power
  3. jQuery插件:jqGrid使用(二)
  4. 黑盒測试(一)-----边界值測试
  5. Android中focusable属性的妙用——底层按钮的实现
  6. ijkplayer-android框架详解
  7. shell脚本例子集锦
  8. source, ~/.bashrc, ~/.bash_profile详解
  9. Android Gradle查询器
  10. eclipse+cdt+MinGW