Maison  >  Article  >  développement back-end  >  Comment supprimer efficacement des éléments par valeur d'un vecteur STL ?

Comment supprimer efficacement des éléments par valeur d'un vecteur STL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-22 12:44:15281parcourir

How Do I Efficiently Remove Elements by Value from an STL Vector?

Effacer des éléments d'un vecteur STL par valeur

Lorsque vous travaillez avec des vecteurs STL, supprimer un élément par sa valeur peut sembler être une tâche de base opération, mais il ne semble pas y avoir de méthode simple au sein de la classe vectorielle elle-même.

La fonction std::remove fournit une solution pour cette tâche courante. Cependant, il est important de noter que std::remove ne supprime pas directement les éléments du conteneur. Au lieu de cela, il repositionne les éléments qui satisfont une condition donnée au début du conteneur. Pour terminer le processus de suppression, ce conteneur modifié doit être passé à containers_type::erase pour supprimer les éléments redondants désormais situés à la fin.

Considérez l'exemple suivant :

std::vector<int> vec;
// .. populate vec ..
int int_to_remove = n;
vec.erase(std::remove(vec.begin(), vec.end(), int_to_remove), vec.end());

Dans ce Par exemple, std::remove repositionne tous les éléments non égaux à int_to_remove au début du vecteur et renvoie un itérateur pointant vers le premier élément après ces éléments. Cet itérateur est ensuite utilisé comme argument pour std::erase(), supprimant ainsi les éléments restants à la fin du vecteur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn