Cómo comprobar si el elemento existe en el vector C++
-
C++
std::find()
Algoritmo para comprobar si el elemento existe en el vector -
C++ Basada en el rango
for
el bucle para comprobar si el elemento existe en el vector -
C++
any_of()
algoritmo para comprobar si un elemento existe en el vector
Este artículo demuestra múltiples métodos sobre cómo se puede comprobar si un elemento existe en un vector C++.
C++ std::find()
Algoritmo para comprobar si el elemento existe en el vector
El método find()
es una parte de la biblioteca de algoritmos STL; puede comprobar si el elemento dado existe en un rango particular. La función busca un factor que sea igual al tercer parámetro pasado por el usuario. El valor de retorno correspondiente es el iterador del primer elemento encontrado, o en caso de que no se encuentre ninguno, se devuelve el fin del rango.
Observe que usamos el operador *
para acceder al valor de la cadena devuelta y hacer una condición de comparación en la sentencia if
, como se muestra en el siguiente ejemplo.
#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;
}
Resultado:
nibble is present in the vector
nimble is not present in the vector
C++ Basada en el rango for
el bucle para comprobar si el elemento existe en el vector
Un bucle for
basado en el rango puede ser usado como otra solución para comprobar si un elemento dado está presente en el vector. Este método es relativamente sencillo porque itera a través del vector; cada iteración comprueba la igualdad con una cadena dada. Si un elemento coincide, se imprime una cadena de confirmación, y el bucle se detiene utilizando la sentencia 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;
}
Resultado:
nibble is present in the vector
C++ any_of()
algoritmo para comprobar si un elemento existe en el vector
Otro método útil de la cabecera <algorithm>
, que es similar al método find
, es el algoritmo any_of
. El método any_of
comprueba si el predicado unario, que se especifica como tercer argumento, devuelve true
para al menos un elemento en un rango dado. En este ejemplo, usamos una expresión lambda para construir un predicado unario para comparar elementos vectoriales.
#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;
}
Resultado:
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