equal比较两个容器是否相等

std::equal

函数模板

将范围[first1,last1)中的元素与从first2开始的范围中的元素进行比较,如果两个范围中的所有元素匹配,则返回true。

 

1
2
3
4
5
6
7
8
9
10
11
12
template <class InputIterator1, class InputIterator2>
bool equal (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);
//迭代器first1,last1,first2
//[first1,last1)中的元素和first2中[first1,last1)个元素做比较
 
 
template <class InputIterator1, class InputIterator2, class BinaryPredicate> 
bool equal (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, BinaryPredicate pred);
//这里的pred是一个返回值可以转换为布尔类型的函数,接受两个元素作为参数(两个序列各一个,顺序相同),并返回一个可转换为bool的值。
//返回的值表示在这个函数的上下文中,这些元素是否被认为是匹配的。
//该函数不应修改其任何参数。
//这可以是一个函数指针,也可以是一个函数对象。

参数

first1,last1,first2:
  first1,last1,first2都是迭代器[first1,last1)中的元素和first2中[first1,last1)个数量的元素做比较

pred:
  是一个返回值可以转换为布尔类型的函数,接受两个元素作为参数(两个序列各一个,顺序相同),

  并返回一个可转换为bool的值。

案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream> //for std::cout std::endl
#include <vector> //for std::vector
#include <algorithm> //for std::equal
 
template<typename T>
bool predicate(T i, T j);
 
int main() {
    using namespace std;<br>     
    int intArr1[]{ 10,20,30,40,50 };//定义并初始化数组intArr1
    vector<int>v1(intArr1, intArr1 + 5);//利用intArr1初始化vector<int> v1
    vector<int>v2{ 1,2,3,4,5 };//定义并初始化vector<int> v2<br>
    if (equal(intArr1, intArr1 + 5,v1.begin())) //使用三个参数的构造函数比较[intArr1,intArr1 + 5)的元素是否和v1.begin()开始数量和前者相同的元素是否相同
    {
        cout << "他们相等(三参数的构造函数)" << endl;
    }
    else {
        cout << "他们不相等(三参数的构造函数)" << endl;
    }
 
    if (equal(intArr1, intArr1 + 5, v2.begin(), predicate<int>)) //使用四个参数的构造函数比较[intArr1, intArr1 + 5)的元素是否和v2.begin()开始数量和前者相同的元素是否相同,使用predicate<int>函数比较
    {
        cout << "他们相等(四参数的构造函数)" << endl;
    }
    else {
        cout << "他们不相等(四参数的构造函数)" << endl;
    }
 
}
 
template<typename T>
bool predicate(T i, T j) {
    return (i == j);
}

  定义并初始化了数组intArr1:10,20,30,40,50。

  用intArr1里的[intArr1, intArr1 + 5)来初始化vector<int> v2(数组名称就是指向数组第一个元素的指针) 

  定了并初始化了vector<int> v2 :1,2,3,4,5

执行的操作

使用了三个参数的equal构造函数判断intArr1和v1是否相等

使用了四个参数的equal构造函数判断intArr1和v2是否相等

 

posted @   EF果果  阅读(86)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示