Biblioteca de algoritmos C ++ - Función is_permutation ()

Descripción

La función C ++ std::algorithm::is_permutation()comprueba si una secuencia es permutación de otra o no. Utiliza un predicado binario para la comparación.

Declaración

A continuación se muestra la declaración de la función std :: algorítm :: is_permutation () del encabezado std :: algoritmo.

C ++ 11

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

Parámetros

  • first1 - Introduzca el iterador en la posición inicial de la primera secuencia.

  • last1 - Introduzca el iterador en la posición final de la primera secuencia.

  • first2 - Introduzca el iterador en la posición inicial de la segunda secuencia.

  • pred - Un predicado binario que acepta dos argumentos y devuelve bool.

Valor devuelto

Devuelve verdadero si el primer rango es una permutación de otro; de lo contrario, devuelve falso.

Excepciones

Lanza una excepción si el predicado binario o una operación en un iterador arroja una excepción.

Tenga en cuenta que los parámetros no válidos provocan un comportamiento indefinido.

Complejidad del tiempo

Cuadrático.

Ejemplo

El siguiente ejemplo muestra el uso de la función std :: algorítm :: 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;
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

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