map元素删除
来源:互联网 发布:淘宝网户外音响长红 编辑:程序博客网 时间:2024/05/10 23:26
map内部以RB-tree( 一种平衡二叉树)结构存储。应用时可以通过迭代器方便操作。但在移除元素时容易出现问题。
- typedef std::map< std::string, float > myMap;
- myMap example;
- myMap::iterator pos;
- ......
- for( pos = example.begin(); pos != example.end(); ++pos )
- if( pos->second == value )
- {
- example.erase( pos );//运行时错误.
- }
对pos所指元素调用erase(), 会使pos不再是一个有效迭代器, 此后如果不对pos重新设置就使用pos,会导致未定义行为,比如++pos操作。
正确使用:
- for( pos = example.begin(); pos != example.end(); )
- if( pos->second == value )
- example.erase( pos++);
- else
- ++pos;
此时,pos++会将pos指向下一个元素,并返回其原始值。
当调用erase()时,pos已经不再指向那个即将被删除的元素了。
- map元素删除
- map删除元素
- map删除元素注意
- map 删除指定元素
- vector map删除元素
- 删除map中的元素
- 在map里删除元素
- map 中删除指定元素
- map遍历时,删除元素
- Map、List元素的删除
- Map遍历与删除元素
- std::map遍历删除某些元素问题
- 循环删除vector和map中的元素
- map和vector删除元素的区别
- 遍历删除map中元素的方法
- C++ stl list、map、vector删除元素
- 循环删除vector和map中的元素
- 循环删除vector和map中的元素
- 我到底是什么颜色的
- 邂逅,在雨中
- [转]英特尔为什么能在CPU方面领跑?
- u-boot编译笔记
- 数据库设计3个泛式和经验谈
- map元素删除
- 60岁生日
- WAMP学习日记之:Apache发布php网站
- 《把脉》读者反馈总结
- 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A
- 明天
- [转贴]一目了然
- 我开学了
- Searching