Comprobar si un array contiene un elemento en C++

Shikha Chaudhary 12 octubre 2023
  1. Use un bucle para verificar si un array contiene un elemento en C++
  2. Utilice std::find para comprobar si un array contiene un elemento en C++
  3. Utilice Std::Count para comprobar si un array contiene un elemento en C++
  4. Utilice std::binary_search para comprobar si un array contiene un elemento en C++
  5. Use la función any_of() para verificar si un array contiene un elemento en C++
  6. Conclusión
Comprobar si un array contiene un elemento en C++

Al trabajar con arrays en C++, es posible que también deba verificar si un arreglo contiene un elemento en C++. Aunque esto se puede hacer simplemente usando un bucle, otras formas eficientes pueden hacer lo mismo.

Este artículo lo guiará a través de las diversas formas de verificar si un elemento está presente en un array en C++. Sigue leyendo.

La biblioteca estándar de C++ proporciona algunos algoritmos y funciones que podemos usar para verificar si un array contiene un elemento en C++. Pero primero veamos cómo podemos usar un bucle para hacer esto.

Use un bucle para verificar si un array contiene un elemento en C++

Puede usar un bucle for para mantener las cosas muy simples. Aquí, en el siguiente código, tenemos un array llamada points y un elemento que tenemos que buscar llamado key.

Dentro del bloque main, usamos un bucle for para repasar todos los elementos linealmente. En cada iteración, verificamos si el elemento actual es el mismo que el elemento que estamos buscando.

Si se encuentra el elemento key, el bucle se interrumpe y el valor de la variable booleana, present, se actualiza a false. Posteriormente, en función del valor de esta variable, present, imprimimos la salida deseada.

Código de ejemplo:

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  bool present = false;
  for (int i : points) {
    if (i == key) {
      present = true;
      break;
    }
  }
  if (present) {
    cout << "The element is present";
  } else {
    cout << "The elment is not present";
    return 0;
  }

Producción :

The element is present

Aunque esta es la forma más fácil de buscar un elemento en un array, existen otras formas mejores de hacer lo mismo. Los discutiremos en las siguientes secciones.

Utilice std::find para comprobar si un array contiene un elemento en C++

La función std::find se utiliza principalmente para buscar un elemento en un rango específico. Esta función busca el elemento requerido entre el rango [first, last).

Sintaxis:

InputIterator find(InputIterator first, InputIterator last, const T& val);

A continuación se muestra el código que utiliza la función std::find para buscar un elemento en un array. Aquí, usamos una variable booleana, present, y la función std::find para iterar sobre un array points.

La función std::find toma tres argumentos:

  1. la variable points, que actúa como iterador para la posición inicial de un array
  2. la expresión points+x, que actúa como iterador para la última posición del arreglo
  3. y la variable key, que es el valor a buscar

Si no se encuentra un valor, esta función devuelve el iterador al final de un array, pero podemos imprimir la declaración deseada en función del valor present de la variable.

Código de ejemplo:

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  int x = sizeof(points) / sizeof(*points);

  bool present = std::find(points, points + x, key) != points + x;

  if (present) {
    cout << "The element is present";
  } else {
    cout << "The element is not present";
  }
  return 0;
}

Producción :

The element is present

Si pasar los argumentos mencionados anteriormente es confuso, también puede pasar dos iteradores al principio y al final de un array usando las funciones begin() y end(), respectivamente.

Código de ejemplo:

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  bool present = std::find(begin(points), end(points), key) != end(points);

  if (present) {
    cout << "The element is present";
  } else {
    cout << "The element is not present";
  }
  return 0;
}

Producción :

The element is present

Vea cómo podemos usar directamente las funciones begin() y end() para simplificar el código. Funciona igual que los argumentos del código anterior.

Utilice Std::Count para comprobar si un array contiene un elemento en C++

Una forma más podría ser usar el algoritmo std::count. Esencialmente, este algoritmo cuenta la cantidad de veces que se ve un elemento en un rango determinado.

Si el valor devuelto de la cuenta no es cero, esto implica que el elemento está presente en un array. El algoritmo std::count también cuenta las ocurrencias de un elemento entre el rango [first, last).

Sintaxis:

int counter(Iterator first, Iterator last, T &val)

Mira el código para entender cómo funciona.

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  cout << std::count(begin(points), end(points), key);
}

Producción :

2

Vea cómo pasamos los argumentos requeridos a esta función e imprimimos el resultado. Dado que el valor key 56 está presente en dos lugares de un array points, obtenemos el resultado como 2.

Ahora, fusionaremos esto con una variable booleana, present, para comprobar si el recuento de la variable key es mayor que cero o no. En caso afirmativo, simplemente significa que el elemento está presente en un array.

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  bool present = std::count(begin(points), end(points), key) > 0;

  if (present) {
    cout << "The element is present";
  } else {
    cout << "The element is not present";
  }
  return 0;
}

Producción :

The element is present

Naturalmente, este algoritmo tiene un rendimiento más lento que std::find ya que atraviesa toda un array para encontrar el recuento de un elemento.

Utilice std::binary_search para comprobar si un array contiene un elemento en C++

Si se ordena un array, la forma más eficaz de comprobar si un array contiene un elemento en C++ es utilizar el algoritmo de búsqueda binaria. La biblioteca estándar de C++ proporciona un algoritmo binary_search para hacer lo mismo.

El algoritmo std::binary_search devuelve el valor true si el elemento se encuentra en el rango [first, last). De lo contrario, devuelve false.

En el siguiente código, hemos creado una función llamada checkEle() dentro de la cual primero ordenamos un array usando la función sort() y luego usamos el algoritmo std::binary_search para buscar el elemento key.

Código de ejemplo:

#include <algorithm>
#include <iostream>
using namespace std;

bool checkEle(int a[], int x, int key) {
  if (x <= 0) {
    return false;
  }
  sort(a, a + x);
  return std::binary_search(a, a + x, key);
}

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  int x = sizeof(points) / sizeof(*points);

  bool present = checkEle(points, x, key);

  if (present) {
    cout << "The element is present";
  } else {
    cout << "The element is not present";
  }
  return 0;
}

Producción :

The element is present

Esto es útil solo cuando un array ya está ordenada porque usar la función sort() primero para ordenar un array aumenta aún más la complejidad del tiempo.

Use la función any_of() para verificar si un array contiene un elemento en C++

Podemos usar la función any_of() para verificar si un predicado se ajusta a cualquier elemento presente en un rango dado. En caso afirmativo, devuelve true; de lo contrario, devuelve false.

Sintaxis:

template <class InputIterator, class UnaryPredicate>
bool any_of(InputIterator begin, InputIterator end, UnaryPredicate p);

Mire el código para comprender cómo se define el predicado. Aquí, además de llamar a la función any_of(), también usamos la condición and que verifica simultáneamente si el elemento actual es igual a la key que estamos buscando.

Si la condición se cumple para cualquier elemento, el valor de la variable booleana present se actualiza a true.

#include <algorithm>
#include <array>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  bool present =
      std::any_of(begin(points), end(points), [&](int i) { return i == key; });

  if (present) {
    cout << "The element is present";
  } else {
    cout << "The element is not present";
  }
  return 0;
}

Producción :

The element is present

Así es como la función any_of() puede buscar un elemento en un array. Se trata de cómo podemos buscar un elemento en un array en C++.

Conclusión

Este artículo discutió varios enfoques para verificar si un array contiene un elemento en C++. Vimos cómo se utiliza un simple bucle for para esto en C++ y también funcionamos con algoritmos como std::find, std::count y std::binary_search.

Aunque, todos estos métodos logran el mismo objetivo. Depende totalmente de usted decidir el mejor enfoque que le guste.

Artículo relacionado - C++ Array