tomalille
Messages postés52Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention 5 juin 2007
-
11 mai 2006 à 15:59
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 2006
-
12 mai 2006 à 08:32
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
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 11 mai 2006 à 23:17
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
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 11 mai 2006 à 18:12
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".
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 12 mai 2006 à 00:27
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.
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 12 mai 2006 à 08:32
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)