相关疑难解决方法(0)

如果在从头到尾迭代时调用map元素上的erase()会发生什么?

在下面的代码中,我遍历一个map并测试是否需要擦除一个元素.擦除元素并继续迭代是否安全,或者我是否需要在另一个容器中收集密钥并执行第二个循环来调用erase()?

map<string, SerialdMsg::SerialFunction_t>::iterator pm_it;
for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++)
{
    if (pm_it->second == delete_this_id) {
        port_map.erase(pm_it->first);
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:当然,我读了这个问题,我认为这个问题没有关系,但回答了我的问题.

c++ iterator stl

132
推荐指数
2
解决办法
8万
查看次数

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

重复:

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

如何从stdmap过滤项目

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

c++ stl map

2
推荐指数
1
解决办法
5252
查看次数

标签 统计

c++ ×2

stl ×2

iterator ×1

map ×1