Nel codice seguente cerco una mappa e controllo se un elemento deve essere cancellato. È sicuro cancellare l'elemento e continuare a scorrere o devo raccogliere le chiavi in un altro contenitore ed eseguire un secondo ciclo per chiamare il cancella ()?
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);
}
}
AGGIORNAMENTO: Naturalmente, ho letto questa domanda che non pensavo fosse correlata, ma risponde alla mia domanda.
std::remove_if
non funziona constd:map