std :: find () con ejemplos en C ++

En este artículo, vamos a ver cómo para buscar la posición de un elemento dentro de un rango utilizando la función STL find ()?

encontrar () como una función STL

encontrar () es una función STL que viene en el & lt; algoritmo de & gt; archivo de cabecera que devuelve un iterador a la primera ocurrencia del elemento de búsqueda dentro de un rango.

Sintaxis:

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

Cuando,

  • InputIterator primera – iterador al inicio del rango de búsqueda
  • InputIterator última – iterador al final del intervalo de búsqueda
  • class T & val – valor que se debe buscar de tipo de datos T

Lo que es InputIterator?
iterador a la primera posición del rango en el que se encuentra el elemento de búsqueda. Si no se encuentra elemento de búsqueda devuelve iterador al extremo

class escribir: bool

Uso de la sintaxis encima de los elementos en los intervalos correspondientes se buscaron si se encuentra el elemento de búsqueda.

Complejidad de tiempo: El tiempo lineal, O (n)

Diferencia entre binary_search () y encontrar () funciones

  • std :: binary_search () devuelve la función class indica si se encuentra o no . No class la posición. Pero, std :: find () busca en la posición también. Devuelve un iterador a la primera posición.
  • std :: binary_search () buscará en O (log n) si búsquedas std :: find () en tiempo lineal.

Ejemplo 1: Cuando el buscados elemento se encuentra y tiene sólo un ejemplo en el intervalo de búsqueda

#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> arr{ 1, 2, 3, 8, 4, 3 };
int searching_element = 8;
vector<int>::iterator it;
//starting iterator of range= arr.begin()
//end iterator of range =arr.end()
it = find(arr.begin(), arr.end(), searching_element);
if (it != arr.end())
cout << searching_element << " is at position: " << it - arr.begin() << endl;
else
cout << searching_element << "not found";
return 0;
}

de salida:

8 is at position: 3

En el programa anterior, hemos comprobado el elemento de búsqueda y lo encontramos en tercera índice (0-indexación)

Ejemplo 2: Cuando el buscados elemento se encuentra y tener más de un ejemplo en el intervalo de búsqueda

#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> arr{ 1, 2, 3, 8, 4, 3 };
int searching_element = 3;
vector<int>::iterator it;
//starting iterator of range= arr.begin()
//end iterator of range =arr.end()
it = find(arr.begin(), arr.end(), searching_element);
if (it != arr.end())
cout << searching_element << " is at position: " << it - arr.begin() << endl;
else
cout << searching_element << "not found";
return 0;
}

de salida:

3 is at position: 2 

en lo anterior class, estamos buscando 3 en la matriz que tiene dos instancias de una en índice de posición 2 y el otro está en la posición 5. Desde std :: find () detiene buscar cada vez que encuentra el elemento de búsqueda por lo que devuelve índice 2 (Marque cómo encontramos la posición del iterador que devuelve).

Ejemplo 3: Cuando el buscados elemento no se encuentra en el rango de búsqueda

#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> arr{ 1, 2, 3, 8, 4, 3 };
int searching_element = 7;
vector<int>::iterator it;
//starting iterator of range= arr.begin()
//end iterator of range =arr.end()
it = find(arr.begin(), arr.end(), searching_element);
if (it != arr.end())
cout << searching_element << " is at position: " << it - arr.begin() << endl;
else
cout << searching_element << " not found";
return 0;
}

de salida:

7 not found

En lo anterior const, el elemento de búsqueda no está presente y es por eso que regresó arr .end () que significa iterador hasta el final de la gama.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *