std::is_permutation en C++ STL

La función de C++ std::algorithm::is_permutation() comprueba si una secuencia es una permutación de otra o no. Utiliza el operador == para comparar. Esta función se definió en C++11.
Sintaxis:

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

first1, last1: Input iterators to the initial 
and final positions of the first sequence.
first2 : Input iterator to the initial position of the second sequence. 

Return value :
true : if all the elements in range [first1, last1] 
compare equal to those of the range
starting at first2 in any order.
false : Any element missing or exceeding.

La función considera tantos elementos de esta secuencia como los del rango [primero1, último1]. Si esta secuencia es más corta, provoca un comportamiento indefinido.

// CPP program to check if 
// two arrays are equal or not
// using std :: is_permutation
#include <iostream>
#include <algorithm>
  
//Driver Code
int main()
{
    int A[] = {1, 7, 0, 2};
    int B[] = {0, 7, 2, 1};
      
    // Check if array B includes all elements of 
    // array A
    if ( std :: is_permutation ( A, A+4, B ) )
    {
        std :: cout << "B is a permutation of A" ;
    }
      
    else
    {
        std :: cout << "B is not a permutation of A" ;
    }
    return 0;
}

Producción:

B is a permutation of A

Otro enfoque para encontrar si las arrays son iguales o no se discute aquí .

Otro ejemplo: compruebe si dos strings son anagramas entre sí

// CPP program to check whether two strings 
// are anagram of each other
// using std :: is_permutation
#include <iostream>
#include <algorithm>
  
/*Driver Code*/
int main()
{
    std :: string A = "SILENT";
    std :: string B = "LISTEN";
      
    /*Checking if B is a permutation of A*/
    if ( is_permutation ( A.begin(), A.end(), B.begin() ) )
    {
        std :: cout << "Anagrams" ;
    }
      
    else
    {
        std :: cout << "Not Anagrams" ;
    }
    return 0;
}

Producción:

Anagrams

Aquí se analiza otro enfoque para comprobar si dos strings son anagramas entre sí .

Versiones de std::permutation

template< class ForwardIt1, class ForwardIt2 >
bool is_permutation( ForwardIt1 first1, ForwardIt1 last1,
                     ForwardIt2 first2 );
// (since C++11)
template< class ForwardIt1, class ForwardIt2, class BinaryPredicate >
bool is_permutation( ForwardIt1 first1, ForwardIt1 last1,
                     ForwardIt2 first2, BinaryPredicate p );
// (since C++11)
template< class ForwardIt1, class ForwardIt2 >
bool is_permutation( ForwardIt1 first1, ForwardIt1 last1,
                     ForwardIt2 first2, ForwardIt2 last2 );
// (since C++14)
template< class ForwardIt1, class ForwardIt2, class BinaryPredicate >
bool is_permutation( ForwardIt1 first1, ForwardIt1 last1,
                     ForwardIt2 first2, ForwardIt2 last)2,
                     BinaryPredicate p );
//(since C++14)

first1, last1 : the range of elements to compare
first2, last2 : the second range to compare
p : binary predicate which returns ​true if the elements should be treated as equal.

Ejemplos:

// False
is_permutation ( c1.begin(),     c1.end (), c2.begin(), c2.end ()) 
  
// True
is_permutation ( c1.begin() + 1, c1.end (), c2.begin(), c2.end ())
  
// True, all empty ranges are permutations of each other
is_permutation ( c1.end (), c1.end (), c2.end(), c2.end ())

Referencia: Documentación oficial de C++ para std::is_permutation

Este artículo es una contribución de Rohit Thapliyal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *