0

0

c++的STL算法库find怎么用 在容器中查找指定元素【实用教程】

尼克

尼克

发布时间:2026-01-01 19:39:14

|

137人浏览过

|

来源于php中文网

原创

std::find 是 C++ STL 中用于线性查找第一个匹配元素的算法,需包含 头文件,接受起始迭代器、结束迭代器和待查值三个参数,返回指向匹配元素的迭代器或 end()。

c++的stl算法库find怎么用 在容器中查找指定元素【实用教程】

find 是 C++ STL 中最常用的查找算法之一,它在指定范围内线性搜索第一个匹配的元素,返回指向该元素的迭代器;如果没找到,就返回范围末尾的迭代器(通常是 end())。

基本用法:需要头文件和三个参数

使用 std::find 前要包含 头文件。它接受三个参数:

  • 起始迭代器(如 v.begin()
  • 结束迭代器(如 v.end(),注意不包含该位置)
  • 要查找的值(类型需与容器元素可比较)

例如,在 vector 中找数字 7:

#include 
#include
#include

std::vector v = {1, 5, 7, 3, 7, 9};
auto it = std::find(v.begin(), v.end(), 7);
if (it != v.end()) {
std::cout << "找到,索引为:" << (it - v.begin()) << std::endl;
} else {
std::cout << "未找到" << std::endl;

支持所有支持迭代器的容器

不只是 vectorfind 可用于 listdequearraystring,甚至原生数组(配合指针):

立即学习C++免费学习笔记(深入)”;

千图设计室AI海报
千图设计室AI海报

千图网旗下的智能海报在线设计平台

下载
  • std::string s = "hello"; auto it = std::find(s.begin(), s.end(), 'l');
  • int arr[] = {2,4,6}; auto it = std::find(std::begin(arr), std::end(arr), 4);

注意:mapunordered_map 不适合直接用 find 查 value(效率低),它们自带更高效的 find() 成员函数查 key。

自定义类型查找:必须支持 == 比较

若容器存的是自定义结构体或类,需重载 operator==,否则编译失败:

struct Person {
std::string name;
int age;
bool operator==(const Person& other) const {
return name == other.name && age == other.age;
}
};

std::vector people = {{"Alice", 30}, {"Bob", 25}};
auto it = std::find(people.begin(), people.end(), Person{"Bob", 25});

找不到时返回 end(),务必检查再解引用

这是常见错误来源:直接对返回的迭代器取值而不判断是否有效,会导致未定义行为:

  • ✅ 正确:if (it != container.end()) { use *it; }
  • ❌ 危险:std::cout (万一没找到)

stringvector 等连续容器,也可用 it - begin() 得到下标;但对 list 这类链表,只能用 std::distance(begin(), it) 计算位置。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

312

2023.08.02

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

713

2023.08.22

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

519

2023.09.20

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

193

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

186

2025.07.04

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

193

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

186

2025.07.04

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

312

2023.08.02

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

65

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go 教程
Go 教程

共32课时 | 3.2万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号