复制:
我有一张地图map1<string,vector<string>>
我有这个地图“itr”的迭代器。我想从这个地图中删除“itr”指向的条目。我可以使用函数 map1.erase(itr); 在这一行之后,迭代器“itr”变得无效。根据我在项目中的要求,迭代器必须指向下一个元素。任何人都可以帮我提前注册这个:) santhosh
我有一张地图map1<string,vector<string>>
我有这个地图“itr”的迭代器。我想从这个地图中删除“itr”指向的条目。我可以使用函数 map1.erase(itr); 在这一行之后,迭代器“itr”变得无效。根据我在项目中的要求,迭代器必须指向下一个元素。任何人都可以帮我提前注册这个:) santhosh
map<...>::iterator tmp(iter++);
map1.erase(tmp);
简单的答案:
map.erase(iter++); // Post increment. Increments iterator,
// returns previous value for use in erase method
之前问过并回答过:
如果在从头到尾迭代时在地图元素上调用擦除会发生什么
如何从标准映射中过滤项目
#include <boost/next_prior.hpp>
map<string,vector<string> >::iterator next = boost::next(itr);
map1.erase(iter);
iter = next;