Biblioteca de algoritmos C ++ - função find_if ()

Descrição

A função C ++ std::algorithm::find_if()encontra a primeira ocorrência do elemento que satisfaz a condição. Ele usa predicado unário para especificar a condição.

Declaração

A seguir está a declaração para o cabeçalho da função std :: algorithm :: find_if () std :: algorithm.

C ++ 98

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

Parâmetros

  • first - Insira o iterador na posição inicial.

  • last - Iterador final para a posição final.

  • pred - Um predicado unário que aceita um argumento e retorna bool.

Valor de retorno

retorna um iterador para o primeiro elemento no intervalo (primeiro, último) para o qual o predicado unário retorna verdadeiro. Se nenhum elemento for encontrado, a função retorna por último .

Exceções

Lança exceção se o predicado ou uma operação em um iterador lança exceção.

Observe que os parâmetros inválidos causam um comportamento indefinido.

Complexidade de tempo

Linear, ou seja, O (n)

Exemplo

O exemplo a seguir mostra o uso da função std :: algorithm :: 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;
}

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -

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