template<class InputIterator1, class InputIterator2>
bool equal(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
bool equal(ExecutionPolicy&& exec,
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2);
template<class InputIterator1, class InputIterator2,
class BinaryPredicate>
bool equal(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, BinaryPredicate pred);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
class BinaryPredicate>
bool equal(ExecutionPolicy&& exec,
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, BinaryPredicate pred);
template<class InputIterator1, class InputIterator2>
bool equal(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
bool equal(ExecutionPolicy&& exec,
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2);
template<class InputIterator1, class InputIterator2,
class BinaryPredicate>
bool equal(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
BinaryPredicate pred);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
class BinaryPredicate>
bool equal(ExecutionPolicy&& exec,
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2,
BinaryPredicate pred);
Remarks: Если last2 не было указано в списке аргументов, это обозначается first2 + (last1 - first1) ниже.
Returns: Если last1 - first1 != last2 - first2, вернись false. В противном случае вернуться ,true если для каждого итератора i в диапазоне [first1, last1) выполняются следующие соответствующие условия: *i == *(first2 + (i - first1)), pred(*i, *(first2 + (i - first1))) != false. В противном случае возвращается false.
Complexity:
Для перегрузок без ExecutionPolicy,
если InputIterator1 и InputIterator2 удовлетворяют требованиям итераторов произвольного доступа ([random.access.iterators]) и last1 - first1 != last2 - first2, то применения соответствующего предиката нет; иначе,
в большинстве min(last1 - first1,last2 - first2) случаев применения соответствующего предиката.
Для перегрузок без ExecutionPolicy,
если ForwardIterator1 и ForwardIterator2 удовлетворяют требованиям итераторов произвольного доступа и last1 - first1 != last2 - first2, то нет применения соответствующего предиката; иначе,
O(min(last1 - first1,last2 - first2)) применения соответствующего предиката.