校验两个区间是否相等
bool equal (InputIterator1 beg, InputIterator1 end,InputIterator2 cmpBeg);
bool equal (InputIterator1 beg, InputIterator1 end,InputIterator2 cmpBeg,BinaryPredicate op);
- 第一种形式判断区间[beg,end]内的元素是否与cmpBeg开头的元素一一相等。
- 第二种形式判断第一个区间内的元素与第二个区间内的元素一一对应都使二元谓语op返回true;
- op不应在执行过程中改变状态,也不应该改变元素的内容。
- 调用者必须确保cmpBeg后面有足够的元素与第一个区间比较。
例:
bool fun(int n,int m)
{
return n * 2 == m;
}
int main()
{
vector<int>v{ 1,2,3,4 };
list<int>lst{ 1,2,3,4 };
cout << equal(v.begin(), v.end(), lst.begin())<<ends;
cout<<equal(v.begin(), v.end(), lst.begin(), fun);
return 0;
}
输出结果:1 0