1. equal
[first, last)与[x, x + last - first)每个对应位置的元素相等, 返回true.(默认使用等于操作符)重载版本使用输入的操作符代替默认的等于操作符
函数原形
template<class InIt1, class InIt2> bool equal(InIt1 first, InIt1 last, InIt2 x);template<class InIt1, class InIt2, class Pred> bool equal(InIt1 first, InIt1 last, InIt2 x, Pred pr);
说明:
1. [first, last)与[x, x + last - first)明显第一点就是数量上要相等, 然后对应位置的值相等.
2. 如果[first, last).size > [x, x + last - first).size, 那么就会报错.(在equal内部, 进行++x操作, 如果越界了就会报错).
3. 必须从[first, last)每一个元素都要匹配.
/
#include "stdafx.h"
#include <algorithm>
#include <numeric>
#include <functional>
#include <vector>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> nV, nV1;
std::vector<int>::iterator iter;
std::vector<int>::iterator iterBegin;
std::vector<int>::iterator iterEnd;
nV.clear();
nV.push_back(14);
nV.push_back(15);
nV.push_back(16);
nV1.clear();
nV1.push_back(14);
nV1.push_back(15);
nV1.push_back(16);
iterBegin = nV1.begin();
iterEnd = nV1.end();
std::equal(iterBegin, iterEnd, nV.begin()); // 返回true
nV.clear();
nV.push_back(14);
nV.push_back(16);
nV.push_back(15);
nV.push_back(17);
nV1.clear();
nV1.push_back(14);
nV1.push_back(16);
nV1.push_back(15);
iterBegin = nV1.begin();
iterEnd = nV1.end();
std::equal(iterBegin, iterEnd, nV.begin()); // 返回true
nV.clear();
nV.push_back(14);
nV.push_back(17);
nV.push_back(15);
nV.push_back(16);
nV1.clear();
nV1.push_back(14);
nV1.push_back(16);
nV1.push_back(15);
nV1.push_back(16);
iterBegin = nV1.begin();
iterEnd = nV1.end();
std::equal(iterBegin, iterEnd, nV.begin()); // 返回false
nV.clear();
nV.push_back(14);
nV.push_back(15);
nV.push_back(16);
nV1.clear();
nV1.push_back(14);
nV1.push_back(15);
nV1.push_back(16);
nV1.push_back(16);
iterBegin = nV1.begin();
iterEnd