Bibliothèque d'algorithmes C ++ - fonction find_if ()

La description

La fonction C ++ std::algorithm::find_if()trouve la première occurrence de l'élément qui satisfait la condition. Il utilise un prédicat unaire pour spécifier la condition.

Déclaration

Voici la déclaration de la fonction std :: algorithm :: find_if () sous forme d'en-tête std :: algorithme.

C ++ 98

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

Paramètres

  • first - Entrer l'itérateur à la position initiale.

  • last - Itérateur final à la position finale.

  • pred - Un prédicat unaire qui accepte un argument et retourne bool.

Valeur de retour

renvoie un itérateur vers le premier élément de la plage (premier, dernier) pour lequel le prédicat unaire renvoie true. Si aucun élément de ce type n'est trouvé, la fonction renvoie le dernier .

Des exceptions

Lève une exception si un prédicat ou une opération sur un itérateur lève une exception.

Veuillez noter que des paramètres non valides provoquent un comportement non défini.

Complexité temporelle

Linéaire ie O (n)

Exemple

L'exemple suivant montre l'utilisation de la fonction 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;
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

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