Libreria di algoritmi C ++ - funzione find_if ()

Descrizione

La funzione C ++ std::algorithm::find_if()trova la prima occorrenza dell'elemento che soddisfa la condizione. Utilizza un predicato unario per specificare la condizione.

Dichiarazione

Di seguito è la dichiarazione per std :: algoritmo :: find_if () modulo std :: intestazione algoritmo.

C ++ 98

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

Parametri

  • first - Input iteratore alla posizione iniziale.

  • last - Iteratore finale alla posizione finale.

  • pred - Un predicato unario che accetta un argomento e restituisce bool.

Valore di ritorno

restituisce un iteratore al primo elemento nell'intervallo (primo, ultimo) per il quale il predicato unario restituisce vero. Se non viene trovato alcun elemento di questo tipo, la funzione restituisce last .

Eccezioni

Genera un'eccezione se il predicato o un'operazione su un iteratore genera un'eccezione.

Tieni presente che i parametri non validi causano un comportamento indefinito.

Complessità temporale

Lineare cioè O (n)

Esempio

L'esempio seguente mostra l'utilizzo della funzione std :: algoritmo :: 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;
}

Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:

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