Cómo comprobar si el elemento existe en el vector C++

Jinku Hu 12 octubre 2023
  1. C++ std::find() Algoritmo para comprobar si el elemento existe en el vector
  2. C++ Basada en el rango for el bucle para comprobar si el elemento existe en el vector
  3. C++ any_of() algoritmo para comprobar si un elemento existe en el vector
Cómo comprobar si el elemento existe en el vector C++

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
Autor: 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

Artículo relacionado - C++ Vector