c++ map, mutimap删除问题
来源:互联网 发布:scartch 2.0 for mac 编辑:程序博客网 时间:2024/05/29 05:07
这样删除会导致程序内存覆盖等一系列不可预知的bug
map<string, string>::iterator iter;for ( iter = mm.begin();iter != mm.end(); iter ++ ){ if ( iter->second == something ) { mm.erase( iter ); }}
原因:当erase掉iter后,继续执行iter++,这个时候就乱套了
正确方法:
for (iter = mm.begin();iter != mm.end();){ if ( iter->second == something ) { mm.erase( iter++ ); } else { iter++; // Use Pre Increment for efficiency. }}
可能有人不理解mm.erase(iter++)
其实和这个是一样的
for (iter = mm.begin();iter != mm.end();){ if ( iter->second == something ) { map<string, string>::iterator iter_erase; iter_erase = iter++ //先保存后++再删除 mm.erase( iter_erase ); } else { iter++; // Use Pre Increment for efficiency. }}
- c++ map, mutimap删除问题
- STL map mutimap
- STL容器Map和Mutimap
- 【c++】map 迭代器删除示例
- C++:在迭代中删除map的成员
- C++:在迭代中删除map的成员
- std::map遍历删除某些元素问题
- C++ STL map 删除元素的问题
- map删除
- map删除
- C++:map中数据的插入和删除
- C++map删除多个元素的方法
- 产生数问题(map+queue/C++)
- map中的迭代删除操作注意问题
- C++map遍历删除数据(删除被2整除的键值对)
- 【C/C++】C++primer习题9.26中删除元素问题
- c++map
- c++MAP
- sql server2005数据库还原故障集
- linux中怎么查看压缩包中的内容
- 实用主义的思考与学习 读书笔记
- js获取节点 dom操作
- UML关系(泛化,实现,依赖,关联(聚合,组合))
- c++ map, mutimap删除问题
- InstallShield内部库函数全集(中文版)
- 什么是portlet
- WCF常用绑定选择
- 在字符串中使用特殊字符<>"'&空格
- Object Serialization
- warning: multi-character character constant
- 位移和时间的定律
- [Erlang 0076] Erlang Shell一个怪问题