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

标签: iteratorstring
4432人阅读 评论(0) 收藏 举报
分类:
    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删除后不该继续使用。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1054309次
    • 积分:14989
    • 等级:
    • 排名:第752名
    • 原创:375篇
    • 转载:49篇
    • 译文:19篇
    • 评论:394条
    文章分类
    文章存档
    最新评论