Bonjour à tous !
J'ai trouvé un core dumped dans une appli que je suis en train de développer... je pense qu'il y doit exister un façon élégante de resoudre ce problème.
J'ai un vecteur de la STL qui contient des pointeurs vers des entier. (chaque élément du vecteur contient un pointeur à entier)
Une méthode M(), change la valeur des entiers pointes par le vecteur en sorte que de fois l'entier peut devenir négatif.
Après chaque appel de M(), on va parcourir le vecteur avec un iterateur. Si l'entier pointé est négatif, alors on fait un delete de l'élément négatif pointé et on elimine l'élément pointeur du vecteur qui le pointait.
Le probléme survient quand le dernier élément du vecteur pointé est négatif car il faut l'éliminer, et à ce moment là l'itérateur se perd et voilà le bordel ...
Code :
Comment faire si le dernier élément est négatif pour que l'itérateur ne se perde pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 std::vector<int*> V; // admettons que les éléments pointés sont {4, -7, 8, 46, 31, -1} std::vector<int*>::iterator iter; for (iter = V.begin(); iter != V.end(); iter++) { if (*(*iter)<0) { delete *iter; *iter = NULL; V.erase(iter); } }
Merci d'avance pour votre aide !
Partager