Bonjour;
J'ai ce code source qui permet de supprimer un élement dans une map:
Je n'arrive pas à comprendre pourquoi le code source suivant ne fonctionne pas et est différent du premier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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++; } }
Dans les deux cas, l'iterateur est incrémenté (++) après l'appel à erase, non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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++; } }
Merci d'avance.
Partager