当前位置: 首页 > article >正文

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

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

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

语法

#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. 比较两个向量
#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;
}

输出:

vec1 and vec2 are equal.
vec1 and vec3 are not equal.
2. 使用自定义比较函数
#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;
}

输出:

vec1 and vec2 are equal based on custom comparison.

总结

  • std::equal 是用于比较两个范围内元素是否相等的标准算法。
  • 支持自定义比较逻辑,使其适用于不同的数据类型和比较需求。
  • 适合用于检查数组、向量、列表等容器的内容是否一致。

http://www.kler.cn/a/321834.html

相关文章:

  • STM32设计学生宿舍监测控制系统
  • 23种设计模式的Flutter实现第一篇创建型模式(一)
  • 怎么选择香港服务器的线路?解决方案
  • C++ —— 哈希详解 - 开散列与闭散列
  • 深入解析贪心算法及其应用实例
  • 如何进行产线高阶能耗数据的计算和可视化?
  • 【python append函数的一些细节】
  • 音频转MP3格式困难?如何轻松实现wav转mp3?
  • Vue3中el-table组件实现分页,多选以及回显
  • 基于 STM32 的高精度 PID 温控系统设计与实现:采用 Pt1000 温度传感器与 PWM 控制技术
  • HT5169内置BOOST升压的11W I2S输入D类音频功放
  • 【游戏设计】游戏中需要管理的数据分类
  • MYSQL-查看表中字段属性语法(三)
  • 找质数的方式
  • MATLAB中的无线通信系统测试和验证方法有哪些
  • 代码随想录Day17 图论-1
  • 调和级数枚举+前缀和,CF 731F - Video Cards
  • flutter 设置字体大小,适应各种屏幕
  • 【LeetCode:2535. 数组元素和与数字和的绝对差 + 模拟】
  • 16.面试算法-树的层次遍历与相关面试题
  • ConfigurationManager类功能如何使用
  • 网络原理 - TCP/IP
  • SkyWalking 环境搭建部署
  • 【JAVA开源】基于Vue和SpringBoot的网上租赁系统
  • 获取鼠标当前位置上的元素
  • mysql配置相关命令