Itérateur n'arrivant pas à end()
Bonjour à tous.
J'utilise un itérateur pour parcourir une liste (de la bibliothèque standard), avec une boucle for, de ce type
for(p1 = maListe.begin();p1 != maListe.end();p1++)
L'éxecutable plante (segmentation fault) en arrivant à cette boucle.
J'ai découvert en fait que p1 ne prenait jamais la valeur maListe.end(), et c'est donc l'action ++ qui fait planter en lui demandant de pointer vers quelque chose qui n'existe pas, car :
Code:
1 2 3 4
| while(p1 != maListe.end())
{
p1++;
} |
plante également, tandis que
Code:
1 2 3 4 5 6 7
| int i =0;
std::list<Ma_Classe>::iterator p1;
while(i<maListe.size())
{
i++;
p1++;
} |
Fonctionne.
J'ai cherché sur Google, mais je n'ai pas trouvé de pages correspondant à mon problème.
Si vous avez une piste, je suis preneur.
Merci d'avance.