删除映射中的特定条目,但迭代器必须指向删除后的下一个元素
delete a specific entry in the map,but the iterator must point to the next element after the deletion
重复:
如果在从开始到结束的迭代过程中对地图元素调用擦除,会发生什么
如何从stdmap中筛选项目
我有一个映射CCD_ 1;itr";。我想从这个映射中删除由";itr";。我可以使用函数map1.erase(itr);在这一行之后;itr";变得无效。根据我在项目中的要求,迭代器必须指向下一个元素。有人能帮我整理一下吗thans提前:)桑托什
您可以在将迭代器作为参数传递给erase:的同时增加迭代器
myMap.erase(itr++)
这样,itr
在擦除之前指向的元素被删除,迭代器被递增以指向映射中的下一个元素。如果在循环中执行此操作,请注意不要将迭代器增加两次。
另请参阅类似问题的答案,或对此问题的回答。
map<...>::iterator tmp(iter++);
map1.erase(tmp);
简单答案:
map.erase(iter++); // Post increment. Increments iterator,
// returns previous value for use in erase method
之前询问和回答:
如果在从开始到结束迭代时对map元素调用erase,会发生什么
如何从stdmap中筛选项目
#include <boost/next_prior.hpp>
map<string,vector<string> >::iterator next = boost::next(itr);
map1.erase(iter);
iter = next;
相关文章:
- 如何从存储在std::映射中的std::集中删除元素
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 从矢量中删除元素后出现隔离错误
- 如何使用remove_if从矢量中删除元素
- 如何从使用 for 循环中的矢量大小的矢量中删除元素
- C++映射不删除元素
- 如何从标准::元组中删除元素?
- 在动态数组中添加/删除C++元素
- 如何通过比较彼此的成员从QStringList中删除元素
- 如何修复从矢量中删除元素的错误?
- 从 std::set 中删除元素,同时在 C++17 中迭代该元素
- 使用remove_if从矢量中删除元素
- 用C++从三维矢量中删除元素
- 从对象数组中删除元素
- 如何在不使用 vector::erase() 的情况下编写自定义 Vector 方法来删除元素?
- C++ - 按自定义数据类型向量的值删除元素
- 从任意容器中廉价删除元素的惯用方法?
- 从数组中删除元素不起作用的函数
- 删除元素 BST
- 从向量中删除元素时未处理的异常