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是否相等
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具