类别: 算法 | 组件类型: 函数 |
template <class InputIterator1, class InputIterator2> bool equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2); template <class InputIterator1, class InputIterator2, class BinaryPredicate> bool equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, BinaryPredicate binary_pred);
第一个版本相等返回true当且仅当对于每个迭代器i在[first1, last1), *i == *(first2 + (i - first1))。第二个版本相等返回true当且仅当对于每个迭代器i在[first1, last1), binary_pred(*i, *(first2 + (i - first1))是true.
int A1[] = { 3, 1, 4, 1, 5, 9, 3 }; int A2[] = { 3, 1, 4, 2, 8, 5, 7 }; const int N = sizeof(A1) / sizeof(int); cout << "Result of comparison: " << equal(A1, A1 + N, A2) << endl;
[1] 注意,这与mismatch的行为非常相似:唯一的区别是,当相等只是返回false如果两个范围不同,mismatch返回它们第一次不同的位置。表达式equal(f1, l1, f2)完全等效于表达式mismatch(f1, l1, f2).first == l1,实际上,这是相等可以实现的方式。