std::map遍历删除某些元素问题

原创 2006年05月22日 16:48:00
    typedef map<int, string> INT2STR;
    INT2STR m;
     
    ... ...
    
    for (INT2STR::iterator itr = m.begin(); itr != m.end(); ++itr)
    {
        if (Condition(*itr))
            m.erase(itr);
    }

itr删除与遍历是否有问题,该如何改?

查阅:
http://topic.csdn.net/t/20040819/09/3288683.html
http://bbs.chinaunix.net/archiver/?tid-748398.html

正确方法应为: m.erase(itr++);
iterator删除后不该继续使用。

map的遍历及删除元素

map中有两种遍历方式,entrySet及keySet,使用时视具体情形定。 entrySet:同时取到key和value; keySet:先取key值,再根据key得到value. 如果需要删...

Java Map在遍历过程中删除元素

Java中的Map如果在遍历过程中要删除元素,除非通过迭代器自己的remove()方法,否则就会导致抛出ConcurrentModificationException异常。...
  • uisoul
  • uisoul
  • 2017年11月27日 15:54
  • 36

码农小汪-Map遍历的时候删除元素

今天这里有个需求,需要在遍历Map的时候删除我们的Map中的元素我自己也是写了一个Demopackage test;import java.util.HashMap; import java.util...

【Java】集合(List、Set、Map)遍历、删除、比较元素时的小陷阱

阅读目录 一、漏网之鱼-for循环递增下标方式遍历集合,并删除元素二、ConcurrentModificationException异常-Iterator遍历集合过程中用其他手段(或其他线程)操作元...
  • azhegps
  • azhegps
  • 2016年10月23日 16:46
  • 1746

遍历list或map时删除元素(较巧妙)

#include #include #include using namespace std; int main() { std::list test_list; t...
  • educast
  • educast
  • 2013年10月22日 19:08
  • 762

STL中用erase()方法遍历删除元素注意的问题

转自:http://www.cppblog.com/Herbert/archive/2009/01/08/70479.html   STL中的容器按存储方式分为两类,一类是按以数组形式存储的...

利用java迭代器Itetator遍历并删除HashMap中的元素问题

转自 http://www.blogjava.net/hwpok/archive/2011/11/05/362723.html 问题: 下面的代码试图利用HashMap的Iterator对象遍...
  • wdqbupt
  • wdqbupt
  • 2012年03月07日 03:47
  • 2710

STL迭代器遍历中删除元素问题

STL的管理对象的管理器一般会给上层提供回调函数形如: templete struct CallBack { bool exec(Entry* entry)=0; } templete ...

List在遍历时候的删除元素问题

结果 0 0 1 1 3 2 4 3
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:std::map遍历删除某些元素问题
举报原因:
原因补充:

(最多只允许输入30个字)