C++ 算法 equal()函数
C++算法函数 equal()用于比较两个容器中的元素,如果两个容器中的所有元素都匹配,则返回true。第一个范围是[first1,last1),第二个范围从first2开始。
语法
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 first1, BinaryPredicate pred);
参数
first1 :它是指向[first1,last1)的第一个元素的输入迭代器。
last1 :它是指向[first1,last1)的最后一个元素的输入迭代器。
first2 :它是指向[first2,last2)的第一个元素的输入迭代器。
pred :它是一个接受两个元素作为参数并执行函数设计任务的二进制函数。
返回值
如果两个容器中的所有元素都匹配,则函数返回true,否则返回false。
示例1
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool newpredicate(int m, int n)
{
return(m==n);
}
int main()
{
int newints[]={20,40,60,80,100};
std::vector<int> newvector(newints, newints+5);
if(std::equal(newvector.begin(),newvector.end(),newints))
std::cout<<"Both the containers have matching elements.\n";
else
std::cout<<"Both the containers have difference elements.\n";
newvector[3]=81;
if(std::equal(newvector.begin(),newvector.end(),newints,newpredicate))
std::cout<<"Both the containers have equal containers.\n";
else
std::cout<<"Both the containers do not have equal elements. \n";
return 0;
}
输出:
Both the containers have matching elements.
Both the containers do not have equal elements.
示例2
#include<bits/stdc++.h>
using namespace std;
int main()
{
int u1[]={10,20,30,40,50};
std::vector<int> vec_1(u1,u1+sizeof(u1)/sizeof(int));
std::cout<<"The vector consists of:";
for(unsigned int k=0; k<vec_1.size(); k++)
std::cout<<" "<<vec_1[k];
std::cout<<"\n";
if(std::equal(vec_1.begin(),vec_1.end(),u1))
std::cout<<"Both the containers have equal elements.\n";
else
cout<<"Both containers have different elements.";
}
输出结果:
The vector consists of: 10, 20,30,40,50
Both the containers have equal elements.
复杂性
该函数的复杂度从第一个元素到最后一个元素是线性的。
数据竞争
两个范围中的对象都被访问。
异常
如果任何一个参数抛出异常,该函数会抛出异常。