Comment vérifier si un élément existe dans le vecteur C++

Jinku Hu 12 octobre 2023
  1. C++ std::find() Algorithme pour vérifier si un élément existe dans un vecteur
  2. C++ Boucle for basée sur la plage pour vérifier si l’élément existe dans le vecteur
  3. C++ any_of() Algorithme pour vérifier si l’élément existe dans le vecteur
Comment vérifier si un élément existe dans le vecteur C++

Cet article présente plusieurs méthodes permettant de vérifier si un élément existe dans un vecteur C++.

C++ std::find() Algorithme pour vérifier si un élément existe dans un vecteur

La méthode find fait partie de la bibliothèque d’algorithmes STL ; elle permet de vérifier si l’élément donné existe dans une plage particulière. La fonction recherche un facteur qui est égal au troisième paramètre passé par l’utilisateur. La valeur de retour correspondante est l’itérateur du premier élément trouvé, ou dans le cas où aucun élément n’est trouvé, la stop de la plage est retournée.

Remarquez que nous utilisons l’opérateur * pour accéder à la valeur de la chaîne de caractères retournée et faire une condition de comparaison dans l’instruction if, comme le montre l’exemple suivant.

#include <algorithm>
#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::find;
using std::string;
using std::vector;

int main() {
  string element_to_check1 = "nibble";
  string element_to_check2 = "nimble";

  vector<string> data_types = {"bit",    "nibble",     "byte",      "char",
                               "int",    "long",       "long long", "float",
                               "double", "long double"};

  if (*find(data_types.begin(), data_types.end(), element_to_check1) ==
      element_to_check1) {
    printf("%s is present in the vector\n", element_to_check1.c_str());
  } else {
    printf("%s is not present in the vector\n", element_to_check1.c_str());
  }

  if (*find(data_types.begin(), data_types.end(), element_to_check2) ==
      element_to_check2) {
    printf("%s is present in the vector\n", element_to_check2.c_str());
  } else {
    printf("%s is not present in the vector\n", element_to_check2.c_str());
  }

  return EXIT_SUCCESS;
}

Production:

nibble is present in the vector
nimble is not present in the vector

C++ Boucle for basée sur la plage pour vérifier si l’élément existe dans le vecteur

Une boucle for basée sur la distance peut être utilisée comme une autre solution pour vérifier si un élément donné est présent dans le vecteur. Cette méthode est relativement simple parce qu’elle itére à travers le vecteur ; chaque itération vérifie l’égalité avec une chaîne donnée. Si un élément correspond, une chaîne de confirmation est imprimée, et la boucle s’arrête en utilisant l’instruction break.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  string element_to_check = "nibble";

  vector<string> data_types = {"bit",    "nibble",     "byte",      "char",
                               "int",    "long",       "long long", "float",
                               "double", "long double"};

  for (const auto &item : data_types) {
    if (item == element_to_check) {
      printf("%s is present in the vector\n", element_to_check.c_str());
      break;
    }
  }
  return EXIT_SUCCESS;
}

Production:

nibble is present in the vector

C++ any_of() Algorithme pour vérifier si l’élément existe dans le vecteur

Une autre méthode utile de l’en-tête <algorithm>, qui est similaire à la méthode find, est l’algorithme any_of. La méthode any_of vérifie si le prédicat unaire, qui est spécifié comme troisième argument, retourne true pour au moins un élément dans une plage donnée. Dans cet exemple, nous utilisons une expression lambda pour construire un prédicat unaire pour comparer des éléments vectoriels.

#include <algorithm>
#include <iostream>
#include <vector>

using std::any_of;
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  string element_to_check = "nibble";

  vector<string> data_types = {"bit",    "nibble",     "byte",      "char",
                               "int",    "long",       "long long", "float",
                               "double", "long double"};

  if (any_of(data_types.begin(), data_types.end(),
             [&](const string& elem) { return elem == element_to_check; })) {
    printf("%s is present in the vector\n", element_to_check.c_str());
  }

  return EXIT_SUCCESS;
}

Production:

nibble is present in the vector
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C++ Vector