Bibliothèque d'algorithmes C ++ - Fonction find_end ()

La description

La fonction C ++ std::algorithm::find_end()trouve la dernière occurrence de l'élément. Il utilise un prédicat binaire pour la comparaison.

Déclaration

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

C ++ 98

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

Paramètres

  • first1 - Transférer l'itérateur à la position initiale de la première séquence.

  • last1 - Transférer l'itérateur vers la position finale de la première séquence.

  • first2 - Transférer l'itérateur à la position initiale de la deuxième séquence.

  • last2 - Transférer l'itérateur vers la position finale de la deuxième séquence.

  • pred - Un prédicat binaire qui accepte deux arguments et renvoie bool.

Valeur de retour

Renvoie un itérateur vers le premier élément de la dernière occurrence de (first2, last2) dans first1, last1 .

Des exceptions

Lève une exception si la comparaison d'éléments 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.

Exemple

L'exemple suivant montre l'utilisation de la fonction std :: algorithm :: find_end ().

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

using namespace std;

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

int main(void) {
   vector<int> v1 = {1, 2, 1, 2, 1, 2};
   vector<int> v2 = {1, 2};

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

   if (result != v1.end())
      cout << "Last sequence found at location "
         << distance(v1.begin(), result) << endl;

   v2 = {1, 3};

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

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

   return 0;
}

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

Last sequence found at location 4
Sequence doesn't present in vector.