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

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

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

std::find_if 是 C++ 标准库中的一个算法,用于在给定范围内查找第一个满足特定条件的元素。它接受一个范围(由迭代器指定)和一个谓词(条件函数),返回指向找到的元素的迭代器,如果没有找到则返回结束迭代器。

语法

#include <algorithm>

template <class InputIt, class UnaryPredicate>
InputIt find_if(InputIt first, InputIt last, UnaryPredicate pred);

参数

  • first, last:定义要查找的范围的迭代器。
  • pred:一个接受单个元素并返回布尔值的函数或可调用对象,用于指定查找条件。

返回值

返回指向找到的第一个满足条件的元素的迭代器;如果没有找到,返回 last

示例

1. 在容器中查找满足条件的元素
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> numbers = {1, 3, 5, 7, 8, 10};

    // 查找第一个偶数
    auto it = std::find_if(numbers.begin(), numbers.end(), [](int n) {
        return n % 2 == 0;
    });

    if (it != numbers.end()) {
        std::cout << "First even number: " << *it << std::endl;
    } else {
        std::cout << "No even number found." << std::endl;
    }

    return 0;
}

输出:

First even number: 8
2. 查找自定义对象
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

struct Person {
    std::string name;
    int age;
};

int main() {
    std::vector<Person> people = {{"Alice", 30}, {"Bob", 25}, {"Charlie", 35}};

    // 查找年龄大于 30 的人
    auto it = std::find_if(people.begin(), people.end(), [](const Person& p) {
        return p.age > 30;
    });

    if (it != people.end()) {
        std::cout << "Found person: " << it->name << " with age " << it->age << std::endl;
    } else {
        std::cout << "No person found with age greater than 30." << std::endl;
    }

    return 0;
}

输出:

Found person: Charlie with age 35

总结

  • std::find_if 是一个灵活的算法,用于在容器中查找满足特定条件的元素。
  • 它支持自定义条件,使其适用于多种类型和查找需求。
  • 适合用于数组、向量、列表等容器的元素查找。

http://www.kler.cn/news/326149.html

相关文章:

  • CF1619D.New Year‘s Problem
  • 解决 TypeError: Expected state_dict to be dict-like, , got <class ‘*‘>.
  • Acwing 最小生成树
  • 每日OJ题_牛客_NC40链表相加(二)_链表+高精度加法_C++_Java
  • 《黑神话:悟空》天命人速通法宝 | 北通鲲鹏20智控游戏手柄评测
  • linux打开桌面软件(wps)、获取已打开的文件名(wps)
  • Ini文件读写配置工具类 - C#小函数类推荐
  • 汽车免拆诊断案例 | 2016 款宾利GT车仪表盘上的多个故障灯点亮
  • 使用TensorFlow实现一个简单的神经网络:从入门到精通
  • 动手学深度学习(李沐)PyTorch 第 3 章 线性神经网络
  • TiDB 性能测试的几个优化点
  • Leetcode热题100-438 找出字符串中所有字母异位数
  • R语言非参数回归预测摩托车事故、收入数据:局部回归、核回归、LOESS可视化...
  • 408算法题leetcode--第19天
  • java通过webhook给飞书发送群消息
  • PTA L1-080 乘法口诀数列
  • C语言线程编程深度解析
  • Elasticsearch UNASSIGNED 怎么修复
  • OJ在线评测系统 后端 用策略模式优化判题机架构
  • MySQL基础篇 - 约束
  • Eclipse Memory Analyzer (MAT)提示No java virtual machine was found ...解决办法
  • Altium Designer脚本的执行方式
  • 【漏洞复现】VEXUS多语言货币交易所存在未授权访问漏洞
  • centos已安装python3.7环境,还行单独安装python3.10环境,如何安装,具体步骤
  • 进程、线程、协程详解:并发编程的三大武器
  • websocket初识
  • 数据集-目标检测系列-兔子检测数据集 rabbit >> DataBall
  • 中国资产“超级星期四”之后,腰部中概股或成增长“黑马”
  • Linux云计算 |【第四阶段】PROJECT2-DAY1
  • 如何使用开发者工具捕获鼠标右键点击事件