28 Algorithms library [algorithms]

28.5 Non-modifying sequence operations [alg.nonmodifying]

28.5.12 Is permutation [alg.is_permutation]

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

Requires: ForwardIterator1 и ForwardIterator2 должен иметь один и тот же тип значения. Функция сравнения должна быть отношением эквивалентности.

Remarks: Если last2 не было указано в списке аргументов, это обозначается first2 + (last1 - first1) ниже.

Returns: Если last1 - first1 != last2 - first2, вернись false. В противном случае return, true если существует перестановка элементов в диапазоне [first2, first2 + (last1 - first1)), начиная с ForwardIterator2 begin, так что equal(first1, last1, begin) возвращается true или equal(first1, last1, begin, pred) возвращается true; в противном случае возвращается false.

Complexity: Нет приложений соответствующего предиката if ForwardIterator1 и, ForwardIterator2 отвечающих требованиям итераторов произвольного доступа и last1 - first1 != last2 - first2. В противном случае точно last1 - first1 приложения соответствующего предиката if equal(​first1, last1, first2, last2) вернутся, true если pred он не указан в списке аргументов, или equal(first1, last1, first2, last2, pred) вернутся, true если pred был задан в списке аргументов; в противном случае, в худшем случае O(N2), где N имеет значение last1 - first1.