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