En el siguiente código recorro un mapa y pruebo si un elemento necesita ser borrado. ¿Es seguro borrar el elemento y seguir iterando o necesito recolectar las claves en otro contenedor y hacer un segundo ciclo para llamar a 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);
}
}
ACTUALIZACIÓN: Por supuesto, luego leí esta pregunta que no pensé que estaría relacionada, pero responde a mi pregunta.
std::remove_if
no funciona constd:map