Pb éliminer le dernier élément d'un vecteur de la STL lors d'un parcours
Merci pour les infos Davidbrcz ;)... les liens sont très pédagogiques
J'ai trouvé ce qui génère mon dump... 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:
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);
}
} |
Comment faire si le dernier élément est négatif pour que l'itérateur ne se perde pas.
Merci d'avance pour votre aide !