Bonjour;

J'ai ce code source qui permet de supprimer un élement dans une map:
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++;
	}
}
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
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.