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 and
ForwardIterator2 shall have the same
value type
. The comparison function shall be an equivalence relation
.Remarks: If
last2 was not given in the argument list, it denotes
first2 + (last1 - first1) below
. Returns: If
last1 - first1 != last2 - first2, return
false. Otherwise return
true if there exists a permutation of the elements in the
range
[first2, first2 + (last1 - first1)), beginning with
ForwardIterator2
begin, such that
equal(first1, last1, begin) returns
true or
equal(first1, last1, begin, pred) returns
true; otherwise, returns
false.Complexity: No applications of the corresponding predicate if
ForwardIterator1
and
ForwardIterator2 meet the requirements of random access iterators and
last1 - first1 != last2 - first2. Otherwise, exactly
last1 - first1 applications of the
corresponding predicate if
equal(first1, last1, first2, last2)
would return
true if
pred was not given in the argument list
or
equal(first1, last1, first2, last2, pred) would return
true if pred was given in the argument list; otherwise, at
worst , where
N has the value
last1 - first1.