Librairie STD:enlever un élément d'un vector [Résolu]

Signaler
Messages postés
52
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
5 juin 2007
-
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
-
Bonjour,
je cherche le moyen d'enlever un élément d'un vector dans les librairies STD.
Je veux par exemple enlever le 3ième élément. Je suppose qu'il existe une méthode.
Merci d'avance

4 réponses

Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Salut,
en effet pas très efficace de supprimer au milieu d'un vector,
mais si tu veux garder l'ordre de ton tableau, tu peux utiliser vector::erase par exemple

vector v;
// populate v
v.erase( v.begin() + 3 );

mais bon faut vraiment le vouloir.
Pour un traitement par "lot" tu peux utiliser std::remove

//Ma participation à la saturation du net:
http://hylvenir.free.fr
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Un vector est un tableau donc enlever un element, c'est pas terrible.
Enfin, ce qui se fait, c'est de remplacer le 3eme élement par le
dernier "ton_vector.back()" puis de supprimer le dernier element :
"ton_vector.pop_back".
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Oui si tu veux, mais en interne, il doit tout décaler. Donc ca ne doit
pas etre efficace comme fonction. Enfin ca dépend dans quel contexte tu
en as besoin.
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Oui, c'était ce que je voulais dire, et j'étais d'accord avec toi.
Le contexte est important (imagine un vector trié utilisé avec un binary_search par exemple). Mais en effet, le vector ne sont pas fait pour être "taillé" par un autre endroit que la fin. (un deque devrait mieux convenir, ou une liste si [] n'est pas nécessaire)