OVH Cloud OVH Cloud

STL suppression d'un element suivant critere

21 réponses
Avatar
Thierry
Bonjour,

je veux supprimer un element d'un vecteur suivant un critere.

Le code type serait
for (it = vec.begin(); it != vec.end(); it++)
if (it.value == 1)
it = vec.erase(it);

mais dans ce cas erase fait passer it a l'elem suivant et est reincrementé
dans la boucle, donc on saute un element.

Sur le net y'a des solutions comme ça:

for (it = vec.begin(); it != vec.end();) {

if (it.value == 1) {
it = vec.erase(it);
}
else it++;
}

Mais ca match pas avec mon code qui a différences branches et je dois
utiliser un flag pour savoir si je doit incrementer l'iterateur ou pas.

Pas tres élégant.

Y'a pas de façon de faire plus propre ??


--
Vainqueur du 1er WSOFRJCP

1 réponse

1 2 3
Avatar
Jean-Marc Bourguet
James Kanze writes:

On May 13, 3:19 pm, Jean-Marc Bourguet wrote:
Si j'ai bien compris, il ne veut pas comparer à des valeurs
constantes, mais à d'autres valeurs dans le vecteur. Ce qui fait
que remove_if ne convient pas trop.



C'est ce que j'ai compris par la suite.

--
Jean-Marc
FAQ de fclc++: http://web.archive.org/web/*/http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
1 2 3