运行出错: map/set iterators incompatible
来源:互联网 发布:centos配置ip地址 编辑:程序博客网 时间:2024/06/10 14:20
运行出错: map/set iterators incompatible
原因:erase使得迭代器失效
可以参考:
http://www.cppblog.com/Herbert/archive/2008/12/27/70479.html
但是与上位仁兄不同的是,考虑到 map.erase(iterator) 返回值不是迭代器,而是void类型,而其他Stl类型可以,特建议用此方式:
(标记为A处,特别地方为 迭代器删除前,先后移;且不删除也要后移)
#include <map>
using namespace std;
typedef map<int, int> MapIntInt;
void main()
{
MapIntInt map;
map[1] = 1;
map[2] = 2;
map[3] = 1;
MapIntInt::iterator it;
//print
for (it = map.begin(); it != map.end(); it++)
{
printf("map[%d] = %d\n", it->first, it->second);
}
for (it = map.begin(); it != map.end(); )
{
if (it->second == 1)
{
map.erase(it++); //删除之前,后移 此处标记为A
}
else
{
it++;
}
}
//print
for (it = map.begin(); it != map.end(); it++)
{
printf("map[%d] = %d\n", it->first, it->second);
}
}
(ps:一般,map表只需要找到那个键first,删除后就break退出,因为键值只有一个,不会出错; 而此处,不同的是,是根据值second而非键first,导致需要循环找到,再删除; 因此,此处可以提出将要删除的条件作为键,这样方便删除)
- 运行出错: map/set iterators incompatible
- include\\xtree Line:304 Expression: map/set iterators incompatible
- vector调用erase 后运行时异常vector iterators incompatible
- vector iterators incompatible
- vector iterators incompatible
- c++ string iterators incompatible
- vector iterators incompatible
- vector iterators incompatible问题
- vector iterators incompatible
- vector iterators incompatible
- string iterators incompatible
- 关于list iterators incompatible/vector iterators incompatible 报错总结
- 迭代器vector iterators incompatible错误;
- "vector iterators incompatible"及一些感想
- c++报错:list iterators incompatible
- Hibernate List&Map&array&Set映射出错
- es6学习记录 set/ iterators
- hadoop学习6 运行map reduce出错
- 强类型的DataSet
- 模仿google suggest 下拉菜单
- ComBoBox添加到状态栏,添加的数据无法显示
- c语言初学-关于内存空间的问题
- linux常用命令
- 运行出错: map/set iterators incompatible
- U-Boot移植串口xmodem协议_附测试代码
- 如何使php页面中不再出现NOTICE和DEPRECATED的错误提示
- linux shell: ls 与 文件权限
- 关于杨创YC2440uboot移植
- Maven Integration (m2e) +eclipse3.7.2 安装
- 传智播客AJAX视频教程(十六):实现仿GoogleSuggest自动补全的功能
- 众多Android 开源项目推荐,给力工作给力学习
- 15 Must Know UI Development Questions