694 votes

Comment rechercher un élément dans un std::vector ?

Tout ce que je veux faire est de vérifier si un élément existe dans le vecteur ou pas, donc je peux faire face à chaque cas.

1031voto

MSN Points 30386

Une variante de :

118voto

Brian Neal Points 13668

Comme d'autres l'ont dit, l'utilisation de la STL find ou find_if fonctions. Mais si vous êtes à la recherche de très grands vecteurs et cela influe sur les performances, vous pouvez trier votre vecteur et ensuite utiliser l' binary_search, lower_boundou upper_bound algorithmes.

51voto

m-sharp Points 4349

Trouver des utilisation de l’en-tête de l’algorithme de stl. J’ai illustré son utilisation de type int. Vous pouvez utiliser n’importe quel type vous souhaitez tant que vous pouvez comparer pour l’égalité (surcharge == si vous devez pour votre classe personnalisée).

47voto

DpGeek Points 202

Si votre vecteur n’est pas ordonnée, utilisez l’approche MSN a suggéré :

Si votre vecteur est ordonnée, utilisez binary_search méthode que Brian Neal suggéré :

recherche binaire donne des résultats pire O (log n), ce qui est beaucoup plus efficace que la première approche. Pour utiliser la recherche binaire, vous pouvez utiliser qsort pour trier le vecteur tout d’abord pour garantir l’ordonne.

23voto

Andy Krouwel Points 106

J’ai utiliser quelque chose comme ça...

.. .comme ça c’est vraiment clair et lisible. (Évidemment, vous pouvez réutiliser le modèle à plusieurs endroits).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X