2009-11-07 8 views
2

ive défini plus il suit et rempli d'éléments:Suppression d'un élément vecteur par clé

vector <vector<double> > my_vector; 

, mais je veux un supprimer un élément avec une clé spécifique ...

my_vector.erase(int(specific_key)); 

mais il ne marche pas autorise moi. Comment pourrais-je correctement disposer des éléments assignés à cette clé correctement?

+1

il n'y a pas de clés dans les vecteurs, seulement des index ... –

Répondre

5

par specific_key vous supposant l'élément à voulez dire cette position dans le vector:

my_vector.erase(my_vector.begin() + specific_key); 

serait la réponse "la plus correcte".

Si vous vouliez supprimer l'élément correspondant specific_key (qui devra être de type vector<double> dans l'exemple donné:

my_vector.erase(find(my_vector.begin(), my_vector.end(), specific_key)); 
+0

oui je veux supprimer l'élément à cette position dans le vecteur quand j'applique le code vous gabe (premier), mon application se bloque – Prodigga

+0

ne jamais oublier le gel a été causé par autre chose. testera cette fois une fois le gel fixé. – Prodigga

+0

+1, pour les deux options. Assurez-vous de vérifier end() avant d'effacer. –

1

effacer prend dans un itérateur comme argument.

Vous pouvez faire

my_vector.erase (my_vector.begin() + specific_key); 

Vous pouvez également passer dans une gamme

my_vector.erase (my_vector.begin(), my_vector.begin() + 2); 

Une chose que vous devez noter est que la taille du vecteur se réduit également.

0

La méthode d'effacement prend les itérateurs comme argument.

Example

0

Si la clé spécifique n'est pas position et dire ses quelques données dans le vecteur, puis il faut itérer le vecteur pour ces données et effacer l'itérateur particulier