Comprobar si un array contiene un elemento en C++
- Use un bucle para verificar si un array contiene un elemento en C++
-
Utilice
std::find
para comprobar si un array contiene un elemento en C++ -
Utilice
Std::Count
para comprobar si un array contiene un elemento en C++ -
Utilice
std::binary_search
para comprobar si un array contiene un elemento en C++ -
Use la función
any_of()
para verificar si un array contiene un elemento en C++ - Conclusión
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:
- la variable
points
, que actúa como iterador para la posición inicial de un array - la expresión
points+x
, que actúa como iterador para la última posición del arreglo - 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.