Comment vérifier si un élément existe dans le vecteur C++
-
C++
std::find()
Algorithme pour vérifier si un élément existe dans un vecteur -
C++ Boucle
for
basée sur la plage pour vérifier si l’élément existe dans le vecteur -
C++
any_of()
Algorithme pour vérifier si l’élément existe dans le vecteur
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
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