Après `erase()', l'itérateur est invalide (en fait, tous les itérateurs désignant le même élément, mais pas les autres, je pense). Donc incrémenter `itLi' est incorrect.
Mais le compilateur est paumé après le premier passage. Le code ci-dessous fonctionne :
Le point intéressant est que le retour d'`erase()' fournit un itérateur sur l'élément suivant celui qui a été détruit (ou end() en cas de fin de liste).
Mais le mieux dans ce cas est :
li.erase( li.begin() , li.end() ) ;
qui est équivalent à :
li.clear() ;
Je me demande comment utiliser cette technique quand on efface partiellement. Comme ça ? :
Après `erase()', l'itérateur est invalide (en fait, tous les
itérateurs désignant le même élément, mais pas les autres, je pense).
Donc incrémenter `itLi' est incorrect.
Mais le compilateur est paumé après le premier passage.
Le code ci-dessous fonctionne :
Le point intéressant est que le retour d'`erase()' fournit un
itérateur sur l'élément suivant celui qui a été détruit (ou end() en
cas de fin de liste).
Mais le mieux dans ce cas est :
li.erase( li.begin() , li.end() ) ;
qui est équivalent à :
li.clear() ;
Je me demande comment utiliser cette technique quand on
efface partiellement. Comme ça ? :
Après `erase()', l'itérateur est invalide (en fait, tous les itérateurs désignant le même élément, mais pas les autres, je pense). Donc incrémenter `itLi' est incorrect.
Mais le compilateur est paumé après le premier passage. Le code ci-dessous fonctionne :
Le point intéressant est que le retour d'`erase()' fournit un itérateur sur l'élément suivant celui qui a été détruit (ou end() en cas de fin de liste).
Mais le mieux dans ce cas est :
li.erase( li.begin() , li.end() ) ;
qui est équivalent à :
li.clear() ;
Je me demande comment utiliser cette technique quand on efface partiellement. Comme ça ? :