Dans le code suivant, je parcourt une carte et teste si un élément doit être effacé. Est-il sûr 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 effacer ()?
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);
}
}
MISE À JOUR: Bien sûr, j'ai ensuite lu cette question que je ne pensais pas être liée mais répond à ma question.
std::remove_if
ne fonctionne pas avecstd:map