97.STL-查找算法 find

news/2025/3/15 16:33:14/

目录

STL-查找算法find

1.基本用法:

2.查找自定义类型:

3.查找范围:


STL-查找算法find

在C++的STL(标准模板库)中,find 算法用于在指定范围内查找指定值的元素。

功能描述:

  • 查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()

函数原型:

  • find(iterator beg, iterator end, value);
  • // 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
  • // beg 开始迭代器
  • // end 结束迭代器
  • // value 查找的元素

以下是使用 find 算法的一些基本示例:

1.基本用法:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;int main() {vector<int> numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };// 使用 find 查找数字 5vector<int>::iterator it = find(numbers.begin(), numbers.end(), 5);if (it != numbers.end()) {cout << "找到了:" << *it << endl;}else {cout << "未找到" << endl;}return 0;
}

2.查找自定义类型:

如果你在一个包含自定义类型的容器中查找元素,需要确保自定义类型有相应的比较方式,通常通过重载 == 运算符。

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;class Person {
public:string name;int age;Person() = default;Person(string n,int a):name(n),age(a){}bool operator==(const Person& p) {return name == p.name && age == p.age;}void print_person()const {cout << "name:" << name << " age:" << age;}
};void test02() {vector<Person> p;p.push_back(Person("xiaobai", 11));p.push_back(Person("xiaohong", 12));p.push_back(Person("xiaocheng", 13));p.push_back(Person("xiaohuang", 10));p.push_back(Person("xiaolv", 9));p.push_back(Person("xiaoqing", 12));p.push_back(Person("xiaolan", 11));p.push_back(Person("xiaozi", 10));vector<Person>::iterator it=find(p.begin(), p.end(), Person("xiaolv", 9));if (it == p.end()) {cout << "没有找到这个人" << endl;}else {cout << "找到了这个人"  << endl;it->print_person();}
}
int main() {test02();return 0;
}

 

 这里的 Person 类重载了 == 运算符,以便在查找时进行比较。

3.查找范围:

你可以指定查找的范围,而不是整个容器。

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;int main() {vector<int> numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };// 查找范围在前半部分vector<int>::iterator it = find(numbers.begin(), numbers.begin() + 5, 3);if (it != numbers.end()) {cout << "找到了:" << *it << endl;}else {cout << "未找到" << endl;}return 0;
}

 写在最后:以上就是本篇文章的内容了,感谢你的阅读。如果感到有所收获的话可以给博主点一个赞哦。如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~   


http://www.ppmy.cn/news/1249391.html

相关文章

UE 事件分发机制(二) day10

自定义事件分发机制 自建事件分发机制与结构 Unreal推荐的游戏逻辑开发流程 基于 Unreal推荐的游戏逻辑开发流程&#xff0c;一般我们的整体规划也就是这样 大致结构类图 创建接口类与管理类以及所需函数 新建一个Unreal接口类作为接口 然后创建一个蓝图函数库的基类 Ev…

WPF中DataGrid解析

效果如图&#xff1a; 代码如下&#xff1a; <DataGrid Grid.Row"1" x:Name"dataGrid" ItemsSource"{Binding DataList}" AutoGenerateColumns"False"SelectedItem"{Binding SelectedItem,UpdateSourceTriggerPropertyChange…

详解Python中httptools模块的使用

httptools 是一个 HTTP 解析器&#xff0c;它首先提供了一个 parse_url 函数&#xff0c;用来解析 URL。这篇文章就来和大家聊聊它的用法吧&#xff0c;感兴趣的可以了解一下 如果你用过 FastAPI 的话&#xff0c;那么你一定知道 uvicorn&#xff0c;它是一个基于 uvloop 和 h…

@RequestMapping详解:请求映射规则

目录 请求-相应模式&#xff1a; 设置请求映射规则RequestMapping POST 请求&#xff1a; GET 请求 请求-相应模式&#xff1a; 前端作为客户端向后端发送请求&#xff08;请求可以分为请求头和请求体两部分&#xff0c;请求头包含了一些元数据信息&#xff0c;如请求方式、…

炸裂:completablefuture自定义线程池慢2倍......比默认线程池......

尼恩说在前面 尼恩社群中&#xff0c;很多小伙伴找尼恩来卷3高技术&#xff0c;学习3高架构&#xff0c;遇到问题&#xff0c;常常找尼恩反馈和帮扶。 周一&#xff0c;一个5年经验的大厂小伙伴&#xff0c;反馈了一个令人震惊的问题 completablefuture自定义线程池慢2倍…比…

使用Ray轻松进行Python分布式计算

大家好&#xff0c;在实际研究中&#xff0c;即使是具有多个CPU核心的单处理器计算机&#xff0c;也会给人一种能够同时运行多个任务的错觉。当我们拥有多个处理器时&#xff0c;就可以真正以并行的方式执行计算&#xff0c;本文将简要介绍Python分布式计算。 1.并行计算与分布…

【Spring之事务底层源码解析,持续更新中~~~】

文章目录 一、EnableTransactionManagement工作原理二、Spring事务基本执行原理三、Spring事务传播机制与分类四、Spring事务强制回滚五、TransactionSynchronization六、Spring事务详细执行流程 一、EnableTransactionManagement工作原理 二、Spring事务基本执行原理 三、Sp…

文件重命名:如何删除文件名中的下划线,特殊符号批量删除

在日常的工作中&#xff0c;经常会遇到文件名中包含特殊符号的情况&#xff0c;例如&#xff0c;一些文件名可能包含下划线、空格或其他特殊符号&#xff0c;这些符号可能会干扰我们的文件搜索和识别。此外&#xff0c;一些文件名可能包含无法识别的非标准字符&#xff0c;这可…