(本站文章均出自原创,转载请注明出处~)

1.连续内存序列容器(vector,string,deque)序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素。

vector<int> c;
for(vector<int>::iterator it = c.begin(); it != c.end();)
{
if(need_delete())
  it = c.erase(it);
 else
  ++it; 
}

2.关联容器(set,multiset,map,multimap)

关联容器的erase方法没有返回值,被删除的迭代器失效,所以删除前必须确保能得到下一个迭代器,可以用“后置递增迭代器”技术。

map<int,int> m;
for(map<int,int>::iterator it = m.begin(); it != m.end();)
{
 if(need_delete()) 
  m.erase(it++);
 else
  ++it;
}

m.erase得到it的一个副本,在erase真正开始之前it已经递增了。

所以erase得到了当前的迭代器,在erase内部工作开始之前it已经++了,正好满足我们的需要。

3.非连续内存序列容器(list)

只所以单独列出来是因为以上两种方法对list都适用,可依自己喜好选择。

转载于:https://www.cnblogs.com/kjee/archive/2010/05/30/stl_cntr_delete_element_while_iterating.html

STL容器迭代过程中删除元素技巧相关推荐

  1. C++中STL容器利用迭代器删除元素小结

    C++中STL容器利用迭代器删除元素小结 在STL容器中删除元素,容易导致迭代器失效,故应该清楚明白其用法,现在总结一下. 转载自:https://blog.csdn.net/yf_li123/art ...

  2. 如何在C ++中从容器中删除元素

    How to remove elements from container is a common C++ interview question, so you can earn some brown ...

  3. 如何在Java中处理ConcurrentModificationException? 在循环中从ArrayList中删除元素时要当心...

    从Java中从ArrayList中删除元素时常见的问题之一是ConcurrentModificationException. 如果您对索引使用经典的for循环或增强的for循环,并尝试使用remove ...

  4. 【重难点】【Java集合 02】Set、List、Map 的区别、常见的线程安全的集合类、Collection 为什么只能在 Iterator 中删除元素

    [重难点][Java集合 02]List.Set.Map 的区别.常见的线程安全的集合类.Collection 为什么只能在 Iterator 中删除元素 文章目录 [重难点][Java集合 02]L ...

  5. 集合删除元素技巧 removeIf

    集合删除元素技巧 removeIf removeIf() 是从 JDK1.8 开始提供的. 之前我们删除 List 中的元素的话,一般使用循环遍历实现.今天发现 removeIf 很好用,记录一下.

  6. 从PHP中的数组中删除元素

    有没有一种简单的方法可以使用PHP从数组中删除元素,以便foreach ($array)不再包含该元素? 我认为将其设置为null可以做到,但是显然不起作用. #1楼 如果您有一个数字索引的数组,其中 ...

  7. C# - 在foreach中删除元素

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在for ...

  8. List与Map的遍历过程中删除元素

    在日常的开发过程中,经常需要对List或Map里面的符合某种业务的数据进行删除,但是如果不了解里面的机制就容易掉入"陷阱"导致遗漏或者程序异常. List遍历过程中删除元素 使用索 ...

  9. php unset函数_PHP | 使用unset()函数从数组中删除元素

    php unset函数 Given an array and we have to remove an element from the array. 给定一个数组,我们必须从数组中删除一个元素. u ...

最新文章

  1. (LBS)基于地理位置的社交应用大战
  2. 解决MariaDB无法远程连接
  3. JS中遍历数组的两种方式
  4. 10.java 关键字与保留字
  5. Mongodb3.4 复制集及分片配置
  6. 服务器电源维修哪里便宜,服务器电源维修
  7. MATLAB中的柱面与球面
  8. 初始化string对象的方式
  9. 《集异璧》作者侯世达:王维、杨绛与机器翻译的本质
  10. tkmybatis能连接oracle吗,《放弃Mybatis使用tkMybatis》
  11. 在c# winform 的 monthCalendar 里粗体凸显有数据的日期
  12. -webkit-touch-callout: none;禁止ios弹出菜单,长按图片保存到手机时
  13. Android触摸屏突然没反应了
  14. win10黑屏Duilib资源加载失败
  15. 盘点IT行业“中国式合伙人”的离合春秋
  16. java实现12小时制和24小时制的时间
  17. 都雪冬 20190919-2 功能测试
  18. c语言计算特殊角的正弦值,特殊角的三角函数值表 常用的正余弦函数值
  19. H3Cs5500堆叠配置
  20. linux cpu多核运行,LINUX在多核环境下,如果控制使用的CPU数目

热门文章

  1. 后台服务器经典面试题
  2. quick-cocos2d-x教程12:实现文本和password输入界面
  3. Python+selenium自动化测试中Windows窗口跳转方法
  4. 博为峰JavaEE技术文章 ——MyBatis 注解
  5. 2、ESXI安装出错
  6. MPLS *** Trouble Shooting 笔记
  7. CISCO路由器TELNET和SSH远程登录配置实例
  8. Malformed server response 解决方案
  9. 从别人那拷下来的几点Session使用的经验(转载)
  10. 微信小程序惩治“老赖” 河北高院“老赖地图”上线