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

La description

La fonction C ++ std::algorithm::find_first_of()renvoie un itérateur vers le premier élément de la plage de (first1, last1) qui correspond à l'un des éléments de first2, last2 . Si aucun élément de ce type n'est trouvé, la fonction renvoie last1 .

Déclaration

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

C ++ 98

template <class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,
   ForwardIterator2 first2, ForwardIterator2 last2);

C ++ 11

template <class InputIterator, class ForwardIterator>
ForwardIterator1 find_first_of(InputIterator first1, InputIterator last1,
   ForwardIterator first2, ForwardIterator last2);

Paramètres

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

  • last1 - Transférer l'itérateur à 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.

Valeur de retour

Renvoie un itérateur vers le premier élément de la plage de (first1, last1) qui correspond à l'un des éléments de first2, last2 . Si aucun élément de ce type n'est trouvé, la fonction renvoie last1 .

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_first_of ().

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

using namespace std;

int main(void) {
   vector<int> v1 = {5, 2, 6, 1, 3, 4, 7};
   vector<int> v2 = {10, 1};
 
   auto result = find_first_of(v1.begin(), v1.end(), v2.begin(), v2.end());

   if (result != v1.end())
      cout << "Found first match at location " 
         << distance(v1.begin(), result) << endl;

   v2 = {11, 13};

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

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

   return 0;
}

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

Found first match at location 3
Sequence doesn't found.