vector

错误做法

这样做会在遍历过程中越界导致程序崩溃

 std::vector<int> vecInt({ 1, 3, 2, 1, 4, 1 });for (auto i = vecInt.begin(); i != vecInt.end() ; ++i) {if (*i == 1) {vecInt.erase(i);}}

正确做法

 std::vector<int> vecInt({ 1, 3, 2, 1, 4, 1 });for (auto i = vecInt.begin(); i != vecInt.end();) {if (*i == 1) {vecInt.erase(i);}else {++i;}}

调用erase函数后迭代器会指向被删除元素的下一个元素,如果被删除的元素是容器最后一个元素,则指向容器的end()

map

错误做法

std::map<int, std::string> map_i_s;map_i_s.insert({ 1, "1" });map_i_s.insert({ 2, "2" });map_i_s.insert({ 3, "3" });for (auto i = map_i_s.begin(); i != map_i_s.end(); ++i;) {if (i->first > 2) {map_i_s.erase(i);}}

正确做法

std::map<int, std::string> map_i_s;map_i_s.insert({ 1, "1" });map_i_s.insert({ 2, "2" });map_i_s.insert({ 3, "3" });for (auto i = map_i_s.begin(); i != map_i_s.end(); ) {if (i->first > 2) {i = map_i_s.erase(i);}else {++i;}}

set

list

stack

queue

C++容器遍历时删除元素相关推荐

  1. List如何在遍历时删除元素

    背景:业务中经常会涉及遍历list时对集合进行插入或者删除操作 一. 错误方式 先看看下面几段代码,1是foreach的方式去遍历list并删除元素,2是用迭代器的方式遍历list并删除元素,3是下标 ...

  2. C++ vector容器遍历并删除元素

    在使用C++ vector的迭代器遍历并删除元素时,存在一些不注意的误区,这里特此记录. 在使用迭代器遍历vector元素时,错误的删除方法: vector<int>::iterator ...

  3. Map遍历时删除元素

    package ee;import java.util.HashMap; import java.util.Iterator;public class Demo {public static void ...

  4. Kotlin list在遍历时删除元素方法汇总

    方法一:Iterator迭代器 val list = arrayListOf("1", "2", "3", "4", & ...

  5. cocos2d-x CCArray用法 遍历和删除元素

    本文为 justbilt 原创,转载请标明原作者及原文出处,以示尊重! 作者:justbilt 原文:http://blog.justbilt.com/25/ 一.基本用法 1.声明初始化变量 C++ ...

  6. vector, list, map在遍历时删除符合条件的元素

    直接看源码,内有详细解释 /* 测试vector, list, map遍历时删除符合条件的元素 本代码测试环境: ubuntu12 + win7_x64 */ #include <iostrea ...

  7. Python - 遍历列表时删除元素的正确做法

    Python-遍历列表时删除元素的正确做法 一.问题描述 因为删除元素后,整个列表的元素会往前移动,而i却是在最初就已经确定了,是不断增大的,所以并不能得到想要的结果. 问题现象如下: a = [1, ...

  8. python 遍历list删除元素_详解Python遍历列表时删除元素的正确做法

    这篇文章主要介绍了详解Python遍历列表时删除元素的正确做法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.问题描述 这是 ...

  9. Python遍历列表时删除元素的几种方法

    问题来源: 删除列表中的指定元素 描述: 输入一个整数列表,并输入一个整数x,删除列表中所有值为x的数,再输出列表. 问题代码: a = list(eval(input())) x = eval(in ...

最新文章

  1. PHP替换字符串函数strtr()和str_replace()
  2. jQuery选择器总结(上)
  3. 页游开发_小花仙即将出手游,敬童年一起玩过的7K7K和4399
  4. 透过Baba is you看「玩点叙述」
  5. AWS Lambda事件源映射:使您的触发器混乱无序
  6. Swift-属性监听
  7. java jtextpane_java – 从JTextPane获取原始文本
  8. Kubernetes架构图 Architecture Workload Networking Storage RBAC
  9. sql server2008 如何获取上月、上周、昨天、今天、本周、本月的查询周期(通过存储过程)...
  10. 【软件工程】对于Why Software Development Methodologies Suck(为什么软件开发方法论让你觉得糟糕)问题的探讨
  11. 解决禁用IE设置代理检测不通过连不上网
  12. HTML5里video标签支持哪些格式的视频文件及其遇到的坑
  13. 微商模式的出路在哪里?
  14. JCMsuite 纳米光学仿真分析
  15. 什么是物联网技术?物联网主要技术有哪些?
  16. html video ajax,利用AJAX开源项目 在网页里播放视频实现方法
  17. cc讲故事_停止讲故事
  18. 李宏毅《机器学习》笔记:3.误差分析和梯度下降
  19. 魏德米勒端子eplan宏_Eplan部件库和宏全集
  20. C#sealed关键字

热门文章

  1. Java实现qq截图工具
  2. [Vulhub](WooYun-2016-199433)phpmyadmin反序列化漏洞
  3. 扬州大学计算机考研难考吗,扬州大学(专业学位)计算机技术考研难吗
  4. 云计算系统是大规模计算机系统吗,云计算的系统架构及技术探析
  5. git获取本地版本号_Git使用小结
  6. es6 includes(), startsWith(), endsWith()
  7. 网页中二维码识别规则
  8. 在HTML5中如何利用Canvas处理并存储图片
  9. photoshop 切片工具进行切图
  10. java之Hibenate中监听事件的重写和二级cache缓存