如果在从开始到结束迭代时调用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); }}
更新:当然,我那时读这个问题我不认为这是相关的,但回答了我的问题。
相关分类