2019独角兽企业重金招聘Python工程师标准>>>

最近在写代码的过程中,发现了一处删除map元素导致的异常。主要是因为不安全的使用for循环遍历map并删除元素导致的。 我一开始的时候,代码如下:

for(it_pos = map.begin();it_pos!=map.end();it_pos++)
{printf("111\n");if( 0 == it_pos->second ){map.erase(it_pos);}printf("222\n");
}

在运行起来之后,发现整个线程只输出了一次 "111\n222\n",线程就卡在了,不在往后运行了,后来查阅资料,发现了是 it_pos 自增的问题。参考页面是:std::map的安全遍历并删除元素的方法。

这上面代码的问题是,当我们删除了 it_pos 之后,it_pos 这个迭代器已经失效了,对其进行 it_pos++ 操作,就是未知的操作,会引起异常。所以我们应该在删除 it_pos 之前就对其进行 ++。改成下面的代码就可以解决问题了。

for(it_pos = map.begin();it_pos!=map.end();)
{if( 0 == it_pos->second ){map.erase(it_pos++);}else{it_pos++;}
}

转载于:https://my.oschina.net/u/2447371/blog/3015496

在c++中使用for循环遍历map并删除map中的元素的注意事项相关推荐

  1. jquery 遍历java对象_jquery中object对象循环遍历的方法

    一个朋友问对象如何转为数组,当我问他为啥要转得时候,他告诉我,数组可以用js循环遍历,而对象则不可以.其实呢,对象同样可以循环遍历的啊.不用转换也可以循环!说明你对js或者jquery的某些操作不是很 ...

  2. python循环展示大写字母_python调用大写函数python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...

  3. python中字典的循环遍历的方式

    python开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和 ...

  4. python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...

  5. python中字典的循环遍历_python中字典如何遍历循环

    python中字典如何遍历循环 发布时间:2020-09-24 14:16:07 来源:亿速云 阅读:64 作者:Leah 这篇文章将为大家详细讲解有关python中字典如何遍历循环,文章内容质量较高 ...

  6. JavaScript中利用for循环遍历数组

    这篇文章主要为大家详细介绍了JavaScript中利用for循环遍历数组,最好不要使用for in遍历,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先看一段代码 1 2 3 4 5 6 7 8 ...

  7. linux中如何分割字符串数组中,关于bash:linux shell脚本:拆分字符串,将它们放入一个数组中,然后循环遍历它们...

    本问题已经有最佳答案,请猛点这里访问. Possible Duplicate: Split string based on delimiter in Bash? 在bash脚本中,如何使用像;这样的分 ...

  8. 【Linux】Shell脚本中如何使用“循环”遍历“数组”中的元素(包括MySQL的常用指令介绍)

    一.背景 实习过程中,今天mentor突然让我拉取一下远端园区数据库中的部分信息,因为包含很多不同园区的数据信息,而且要以园区为单位生成文件来对数据进行存放,因此自然是需要使用shell脚本来自动生成 ...

  9. python中使用for循环遍历列表元素

    python中的列表可以和for循环组合实现非常方便的列表元素遍历.我们通常把列表名称定义为things,在遍历的时候,我们只需要使用类似 for thing in things这样的结构,就可以实现 ...

最新文章

  1. python request.post 字典参数以json_Python requests.post方法中data与json参数区别详解
  2. python语言的编程模式_一种基于Python语言的EDA开发平台及其使用方法与流程
  3. 关于ecshop中jquery与js冲突解决的方案
  4. 【Flink】Flink Group by 操作 报错 Expression xxx is not being grouped
  5. MySQL--视图view、触发器trigger、事务(start transaction)、存储过程(特殊的数据逻辑处理函数)、流程控制(if,case....)...
  6. 广州规划新增30条地铁 来看看线路图?
  7. word中没文字地方添加下划线方法
  8. 免费商用无版权素材 免费图库 抠图 PNG 插画素材
  9. 贵州:科技创新促高质量发展
  10. 数据分析可视化- 十三朝古都西安
  11. 如何从0搭建公司后端技术栈?
  12. php 母版页,.NET_ASP.NET 2.0 中的创建母版页,  虽然母版页和内容页功能 - phpStudy...
  13. EDK2开发中error C2220: 警告被视为错误 - 没有生成“object”文件的解决方法!
  14. 网页嵌入媒体播放器代码 选择自 murky 的 Blog
  15. 第14/15周作业---郭志康
  16. Js 高德地图SDK
  17. 华为CANN训练营_昇腾AI入门课笔记
  18. HP电池警告,系统侦测到电池可储存容量过低,为了最佳效能,这颗电池可能需要更换。主电池(601),Enter-继续启动,解决方法
  19. 被认证的虫子,吃着才放心 | 独家
  20. Excel学习——countif函数

热门文章

  1. antd动态隐藏表格中的一列_有很多excel表格,如何快速合并到一张表格里?
  2. 鸿蒙系统平板界面,华为鸿蒙系统界面首次曝光!首款预装鸿蒙设备正式入网:发布在即...
  3. 简单的php服务文件下载,php文件下载
  4. matlab中blur函数_游戏中的PostProcessing(后处理)
  5. react控制元素的显示或隐藏
  6. SQL查询数据库完整表结构(mysql)
  7. Windows下安装maven-nexus私服
  8. VS2013配置编译Caffe-Win10_X64
  9. 【BZOJ3676】 [Apio2014]回文串(SAM,manacher)
  10. service worker之cache实践--sw-precache