Bonjour,
j'ai une erreur sur le code suivant :
voila apres le list.erase cela fait n'importe quoi et l'iterateur continue apres la fin de la liste. J'ai regarde partout et j'ai pas du tout trouve la solution du probleme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 for(Object::iterator it = list.begin(); it != list.end(); it++) { if ((*it)->getValue()==testValue) { it = list.erase(it); } }
- D'abord j'utilisais des std::vector plutot que des std::list puisque j'ai cru comprendre que l'ajout/suppression d'element est plus efficace
- Puis avec les std::vector la fonction .erase a l'air de "casser" l'iterateur et j'ai cru comprendre que la structure de liste corrigeait cela.
- j'avais au depart juste list.erase(it) au lieu de it = list.erase(it); car j'ai cru comprendre qu'il faut cette structure pour allouer l'iterateur au prochain element
- j'ai aussi essayer d'ajouter une ligne it = list.end() a la fin pour sortir de la boucle
Mais malgres tout cela, j'ai toujours un probleme. La boucle ne s'arrete pas a la fin de ma liste comme elle devrait s'arreter !
Merci d'avance pour votre aide
Partager