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

Descripción

La función C ++ std::algorithm::find_if()busca la primera aparición del elemento que satisface la condición. Utiliza un predicado unario para especificar la condición.

Declaración

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

C ++ 98

template <class InputIterator, class UnaryPredicate>
InputIterator find_if (InputIterator first, InputIterator last, 
   UnaryPredicate pred);

Parámetros

  • first - Iterador de entrada a la posición inicial.

  • last - Iterador final a la posición final.

  • pred - Un predicado unario que acepta un argumento y devuelve bool.

Valor devuelto

devuelve un iterador al primer elemento del rango (primero, último) para el que el predicado unario devuelve verdadero. Si no se encuentra tal elemento, la función regresa al final .

Excepciones

Lanza una excepción si el predicado 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 es decir O (n)

Ejemplo

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

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

using namespace std;

bool unary_pre(int n) {
   return ((n % 2) == 0);
}

int main(void) {
   vector<int> v = {10, 2, 3, 4, 5};
   auto it = find_if(v.begin(), v.end(), unary_pre);

   if (it != end(v))
      cout << "First even number is " << *it << endl;

   v = {1};

   it = find_if(v.begin(), v.end(), unary_pre);

   if (it == end(v))
      cout << "Only odd elements present in the sequence." << endl;

   return 0;
}

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

First even number is 10
Only odd elements present in the sequence.