删除映射中的特定条目,但迭代器必须指向删除后的下一个元素

2 c++ stl map

重复:

如果在从头到尾迭代时调用地图元素上的擦除会发生什么

如何从stdmap过滤项目

我有一张地图map1<string,vector<string>>我有一个地图"itr"的迭代器.我想从这个地图中删除"itr"指向的条目.我可以使用map1.erase(itr)函数; 在此行之后,迭代器"itr"变为无效.根据我在项目中的要求,迭代器必须指向下一个元素.可以任何身体帮助我提前重新启动这个坦克:) santhosh

Luc*_*lle 5

您可以在将迭代器作为参数擦除时对其进行后递增:

myMap.erase(itr++)
Run Code Online (Sandbox Code Playgroud)

这样,itr删除擦除前指向的元素,并且迭代器递增以指向映射中的下一个元素.如果你在循环中这样做,请注意不要两次增加迭代器.

另请参阅类似问题的答案,或对此问题的回答.