Iteration sur une liste ==> segmentation fault
Bonjour,
j'ai une erreur sur le code suivant :
Code:
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);
}
} |
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 :
- 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