Android常用C++特性之std::equal

声明:本文内容生成自ChatGPT,目的是为方便大家了解学习作为引用到作者的其他文章中。

std::equal 是 C++ 标准库中的一个算法,用于比较两个范围内的元素是否相等。它可以用于检查两个容器或数组的内容是否完全相同。

语法

cpp 复制代码
#include <algorithm>

template <class InputIt1, class InputIt2>
bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2);

template <class InputIt1, class InputIt2, class BinaryPredicate>
bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, BinaryPredicate p);

参数

  • first1, last1:第一个范围的迭代器,定义开始和结束位置。
  • first2:第二个范围的开始迭代器。
  • p(可选):一个接受两个元素并返回布尔值的二元谓词,用于自定义比较逻辑。

返回值

返回 true 如果两个范围内的元素相等,返回 false 否则。

示例

1. 比较两个向量
cpp 复制代码
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec1 = {1, 2, 3, 4, 5};
    std::vector<int> vec2 = {1, 2, 3, 4, 5};
    std::vector<int> vec3 = {1, 2, 3, 4, 6};

    // 比较 vec1 和 vec2
    if (std::equal(vec1.begin(), vec1.end(), vec2.begin())) {
        std::cout << "vec1 and vec2 are equal." << std::endl;
    } else {
        std::cout << "vec1 and vec2 are not equal." << std::endl;
    }

    // 比较 vec1 和 vec3
    if (std::equal(vec1.begin(), vec1.end(), vec3.begin())) {
        std::cout << "vec1 and vec3 are equal." << std::endl;
    } else {
        std::cout << "vec1 and vec3 are not equal." << std::endl;
    }

    return 0;
}

输出:

vbnet 复制代码
vec1 and vec2 are equal.
vec1 and vec3 are not equal.
2. 使用自定义比较函数
cpp 复制代码
#include <iostream>
#include <vector>
#include <algorithm>

bool customCompare(int a, int b) {
    return (a % 10) == (b % 10); // 比较最后一位数字
}

int main() {
    std::vector<int> vec1 = {11, 22, 33};
    std::vector<int> vec2 = {1, 2, 3};

    // 使用自定义比较函数
    if (std::equal(vec1.begin(), vec1.end(), vec2.begin(), customCompare)) {
        std::cout << "vec1 and vec2 are equal based on custom comparison." << std::endl;
    } else {
        std::cout << "vec1 and vec2 are not equal based on custom comparison." << std::endl;
    }

    return 0;
}

输出:

vbnet 复制代码
vec1 and vec2 are equal based on custom comparison.

总结

  • std::equal 是用于比较两个范围内元素是否相等的标准算法。
  • 支持自定义比较逻辑,使其适用于不同的数据类型和比较需求。
  • 适合用于检查数组、向量、列表等容器的内容是否一致。
相关推荐
_Narcissus_11 分钟前
B+树的概念和操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
aichitang202413 分钟前
快乐泛函每一天!内积空间
c++·python·数学·算法·机器学习·ai·泛函分析
Ravikov17 分钟前
工具开发-ESP32程序管理系统 | 具体实现(一)
c++
欧特克_Glodon1 小时前
OpenCV计算机视觉开发入门与实践<十六>:图像边框和图像轮廓
c++·人工智能·opencv·计算机视觉
wuminyu1 小时前
JDK21中FFM api的upcall回调机制解析
java·linux·c语言·jvm·c++
我变成萤火虫8 小时前
河南萌新联赛2026第(四)场:南阳理工学院
数据结构·c++·算法·贪心算法·stl·动态规划
余额瞒着我当琳12 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
ShineWinsu13 小时前
对于C++:布隆过滤器(bloomfilter)的详细解析
c++·面试·位图·位运算·布隆过滤器·海量数据·比特位
牛油果子哥q17 小时前
C++内存模型与深浅拷贝万字详解:栈堆静态内存布局、深浅拷贝底层差异、内存泄漏根治、拷贝崩溃踩坑、手写深拷贝实战
java·开发语言·c++
大鹏的NLP博客17 小时前
通用 Linux 嵌入式板端 C/C++ ABI 与 Glibc 依赖治理规范
linux·c++·交叉编译