📜  C++ STL-algorithm.equal()函数

📅  最后修改于: 2020-10-16 08:38:21             🧑  作者: Mango

C++ STL algorithm函数equal()

C++ STL algorithm.equal()函数比较两个容器中的元素,如果发现两个容器中的所有元素都匹配,则返回一个真值。第一个范围从[first1,last1)开始,第二个范围从first2开始。

句法

template bool equal(InputIterator1 first1, InputIterator1 last1,InputIterator2 first2);
template bool equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first1, BinaryPredicate pred);

参数

first1:它是[first1,last1)的第一个元素的输入迭代器。

last1:它是[first1,last1)的最后一个元素的输入迭代器。

first2:它是[first2,last2)的第一个元素的输入迭代器。

pred:它是一个二进制函数,接受两个元素作为参数并执行该函数设计的任务。

返回值

如果两个容器中的所有元素都匹配,则该函数返回值true,否则返回false。

例子1

#include
#include
#include
using namespace std;
bool newpredicate(int m, int n)
{
    return(m==n);
}
int main()
{
    int newints[]={20,40,60,80,100};
    std::vector 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
using namespace std;
int main()
{
    int u1[]={10,20,30,40,50};
    std::vector vec_1(u1,u1+sizeof(u1)/sizeof(int));
    std::cout<<"The vector consists of:";
    for(unsigned int k=0; k

输出:

The vector consists of: 10, 20,30,40,50
Both the containers have equal elements.

复杂度

该函数从first1元素到last1元素具有线性复杂度。

数据竞争

访问两个范围中的对象。

异常处理

如果任何参数抛出一个异常,该函数将引发异常。