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

La description

La fonction C ++ std::algorithm::is_permutation()teste si une séquence est une permutation d'autres ou non. Il utilise un prédicat binaire pour la comparaison.

Déclaration

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

C ++ 11

template <class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
   ForwardIterator2 first2, BinaryPredicate pred);

Paramètres

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

  • last1 - Entrer l'itérateur à la position finale de la première séquence.

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

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

Valeur de retour

Renvoie true si la première plage est la permutation d'une autre, sinon elle renvoie false.

Des exceptions

Lève une exception si le prédicat binaire 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

Quadratique.

Exemple

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

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

using namespace std;

bool ignore_case(char a, char b) {
   return (tolower(a) == tolower(b));
}

int main(void) {
   vector<char> v1 = {'A', 'B', 'C', 'D', 'E'};
   vector<char> v2 = {'a', 'b', 'c', 'd', 'e'};
   bool result;

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

   if (result == false)
      cout << "Both vector doesn't contain same elements." << endl;

   result = is_permutation(v1.begin(), v1.end(), v2.begin(), ignore_case);

   if (result == true)
      cout << "Both vector contains same elements." << endl;

   return 0;
}

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

Both vector doesn't contain same elements.
Both vector contains same elements.