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

La description

La fonction C ++ std::algorithm::copy_if() copie une plage d'éléments vers un nouvel emplacement si le prédicat renvoie true pour valeur.

Déclaration

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

C ++ 11

template <class InputIterator, class OutputIterator, class UnaryPredicate>
OutputIterator copy_if(InputIterator first,InputIterator last,
   OutputIterator result,UnaryPredicate pred);

Paramètres

  • first - Entrer les itérateurs aux positions initiales de la séquence recherchée.

  • last - Entrer les itérateurs aux positions finales de la séquence recherchée.

  • result - Sortie de l'itérateur à la position initiale dans la nouvelle séquence.

  • pred - Prédicat unaire qui prend un argument et renvoie une valeur booléenne.

Valeur de retour

Renvoie un itérateur pointant vers l'élément qui suit le dernier élément écrit dans la séquence de résultats.

Des exceptions

Lève une exception si l'affectation d'élément 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 dans la distance entre le premier et le dernier .

Exemple

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

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

using namespace std;

bool predicate(int n) {
   return (n %2 != 0);
}

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

   copy_if(v1.begin(), v1.end(), v2.begin(), predicate);

   cout << "Following are the Odd numbers from vector" << endl;

   for (auto it = v2.begin(); it != v2.end(); ++it)
      cout << *it << endl;

   return 0;
}

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

Following are the Odd numbers from vector
1
3
5