Dans le code suivant, je boucle dans une carte et je teste si un élément doit être effacé. Est-il possible d'effacer l'élément et de continuer à itérer ou dois-je collecter les clés dans un autre conteneur et faire une deuxième boucle pour appeler la fonction 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);
}
}
UPDATE : Bien sûr, j'ai ensuite lisez cette question ce que je ne pensais pas être lié mais qui répond à ma question.