C++遍历中删除std::map元素
2017-03-19 21:26
489 查看
在std::list中删除一个元素非常简单,直接使用erase方法即可,代码如下:
或者更简单点
然而根据STL std::map中的定义void erase(iterator pos),此erase并不返回下一个元素的迭代器,因此不能采用std::list的方法
The truth is that ‘erase’ in associative containers doesn’t invalidate any iterators except those that point to elements being erased (that’s also true for ’sid::list’). For this reason, you don’t really need ‘map::erase’ to return an iterator. Just do this
当然此方法同样也适合于std::list等
for(iter = list.begin(); iter != list.end();) { if (shouldDelete(*iter)) iter = list.erase(iter); else ++iter; }
或者更简单点
list.erase(std::remove_if(list.begin(), list.end(), shouldDelete), list_end());
然而根据STL std::map中的定义void erase(iterator pos),此erase并不返回下一个元素的迭代器,因此不能采用std::list的方法
The truth is that ‘erase’ in associative containers doesn’t invalidate any iterators except those that point to elements being erased (that’s also true for ’sid::list’). For this reason, you don’t really need ‘map::erase’ to return an iterator. Just do this
for(iter = map.begin(); iter != map.end();) { if (shouldDelete(*iter)) map.erase(iter++); else ++iter; }
当然此方法同样也适合于std::list等
相关文章推荐
- C++遍历中删除std::map元素
- C++遍历中删除std::map元素
- C++遍历中删除std::hash_map元素问题
- C++遍历中删除std::map元素
- 在遍历C++map中删除元素算法(简单例子)
- c++ 遍历map的时候删除元素
- std::map 通过遍历删除满足某些条件元素的两种方式
- std::map遍历删除某些元素问题
- c++如何遍历删除map/vector里面的元素
- C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效
- C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效
- std::map 通过遍历删除满足某些条件元素的两种方式
- std::map遍历删除某些元素问题
- std::map 通过遍历删除满足某些条件元素的两种方式
- C++ STL遍历map的时候如何删除其中的element
- C++ stl list、map、vector删除元素
- C++语法基础--关联容器--map(二)--查找并读取map中的元素count(),find()与 从map对象中删除元素erase()
- Java 遍历Map时 删除元素
- Java 遍历Map时 删除元素
- c++ 关于map的遍历 删除