Biblioteca de algoritmos de C ++ - función find_first_of ()

Descripción

La función C ++ std::algorithm::find_first_of()devuelve un iterador al primer elemento en el rango de (first1, last1) que coincide con cualquiera de los elementos en first2, last2 . Si no se encuentra tal elemento, la función devuelve last1 .

Declaración

A continuación se muestra la declaración de la función std :: algorítm :: find_first_of () del encabezado std :: algorítmico.

C ++ 98

template <class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
ForwardIterator1 find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,
   ForwardIterator2 first2, ForwardIterator2 last2,BinaryPredicate pred);

C ++ 11

template <class InputIterator, class ForwardIterator, class BinaryPredicate>
ForwardIterator1 find_first_of(InputIterator first1, InputIterator last1,
   ForwardIterator first2, ForwardIterator last2,BinaryPredicate pred);

Parámetros

  • first1 - Reenviar el iterador a la posición inicial de la primera secuencia.

  • last1 - Reenviar el iterador a la posición final de la primera secuencia.

  • first2 - Reenviar el iterador a la posición inicial de la segunda secuencia.

  • last2 - Reenviar el iterador a la posición final de la segunda secuencia.

  • pred - Un predicado binario que acepta dos argumentos y devuelve un bool.

Valor devuelto

Devuelve un iterador al primer elemento en el rango de (first1, last1) que coincide con cualquiera de los elementos en first2, last2 . Si no se encuentra tal elemento, la función devuelve last1 .

Excepciones

Lanza una excepción si la comparación de elementos o una operación en un iterador arroja una excepción.

Tenga en cuenta que los parámetros no válidos provocan un comportamiento indefinido.

Complejidad del tiempo

Lineal.

Ejemplo

El siguiente ejemplo muestra el uso de la función std :: algorítm :: find_first_of ().

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool binary_pred(char a, char b) {
   return (tolower(a) == tolower(b));
}

int main(void) {
   vector<char> v1 = {'f', 'c', 'e', 'd', 'b', 'a'};
   vector<char> v2 = {'D', 'F'};
 
   auto result = find_first_of(v1.begin(), v1.end(), v2.begin(), v2.end(), binary_pred);

   if (result != v1.end())
      cout << "Found first match at location " 
         << distance(v1.begin(), result) << endl;

   v2 = {'x', 'y'};

   result = find_end(v1.begin(), v1.end(), v2.begin(), v2.end(), binary_pred);

   if (result == v1.end())
      cout << "Sequence doesn't found." << endl;

   return 0;
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

Found first match at location 0
Sequence doesn't found.