probleme lors d'un erase() sur une liste - C++ - Programmation
Marsh Posté le 13-02-2006 à 19:17:03
Juste quelque petits remarque, quand tu erase ton iterator est "perdu", quand tu fais -- il faut tester par rapport l.begin(). (si tu erase le premier element).
De meme quand tu es a la fin, tu vas faire ++ 2 fois, or si tu es deja a end() ...y a un probleme..
Enfin a vue de nez vite fait comme ca, c'est dans les tests de limite qu'il y a un probleme
Marsh Posté le 13-02-2006 à 20:38:34
francky06l a écrit : Juste quelque petits remarque, quand tu erase ton iterator est "perdu", quand tu fais -- il faut tester par rapport l.begin(). (si tu erase le premier element). |
Je croyais que erase() poussait mon iterator à l'élément suivant celui que je venais de supprimer. C'est pour cela que je simulais erase() par d++ . Ca change selon les compilateurs ?
Sinon mon code n'est pas finalisé donc il est possible qu'il y ait des problémes aux bords. Je regarderai.
Merci
Marsh Posté le 14-02-2006 à 07:12:00
Je suis certain que erase n'incremente pas l'iterator (pour les STLPort au moins), par contre il retourne un iterator sur l'element suivant (donc faudrait faire quelque chose du genre d = l.erase(d)).
Marsh Posté le 14-02-2006 à 10:15:21
ReplyMarsh Posté le 14-02-2006 à 12:15:38
Taz a écrit : oui exactement, il faut en faire quelque chose du retour de erase() |
Merci, ça a l'air de marcher maintenant. Le pire, c'est que je ne faisais pas le d= pour une autre boucle et ça avait l'air de marcher...
A une prochaine.
Marsh Posté le 13-02-2006 à 18:13:20
Bonjour,
Voila le bout de code qui pose probleme :
Quand je decommente la ligne 11 et je commente la 12, normalement je dois enlever l'element precedent.
Or si la ligne 9 est décommentée, j'ai l'erreur suivante :
*** Break *** segmentation violation
Generating stack trace...
0x0804e258 in parser::time_eliminate() + 0x29e from ./fluorescence
0x0804b9cd in main + 0x339 from ./fluorescence
0xb66d9eb0 in __libc_start_main + 0xd0 from /lib/tls/i686/cmov/libc.so.6
0x0804b611 in __gxx_personality_v0 + 0x89 from ./fluorescence
Abandon
Mais si elle est commentée le programme s'éxécute bien. Quelqu'un aurait-il une idée ? Y a-t-il un probleme à se ballader dans les listes avec ++ et -- ?
---------------
A savoir : la dimension de Hausdorff du chou-fleur a été calculée et vaut 2.33