• Both forms return whether the elements in the range [beg1,end1) are a permutation of the elements
in the range starting with beg2; that is, whether they return equal elements in whatever
order.
• The first form compares the elements by using operator ==.
• The second form compares the elements by using the binary predicate
op(elem1,elem2)
which should return true when elem1 is equal to elem2.
• Note that op should not change its state during a function call. See Section 10.1.4, page 483, for
details.
• op should not modify the passed arguments.
• All Iterators must have the same value type.
• These algorithms are available since C++11.
• Complexity: at worst quadratic (numElems1 comparisons or calls of op(), if all elements are
equal and have the same order).