std::map: erase dans une boucle
Bonjour;
J'ai ce code source qui permet de supprimer un élement dans une map:
Code:
1 2 3 4 5 6 7 8 9
| for(std::map<int, int>::iterator it = m.begin(); it!=m.end(); )
{
if(it->first==1 || it->first==2)
{
m.erase(it++);
}else{
it++;
}
} |
Je n'arrive pas à comprendre pourquoi le code source suivant ne fonctionne pas et est différent du premier:
Code:
1 2 3 4 5 6 7 8 9 10
| for(std::map<int, int>::iterator it = m.begin(); it!=m.end(); )
{
if(it->first==1 || it->first==2)
{
m.erase(it);
it++;
}else{
it++;
}
} |
Dans les deux cas, l'iterateur est incrémenté (++) après l'appel à erase, non ?
Merci d'avance.