c++的STL算法库find怎么用 在容器中查找指定元素【实用教程】
技术百科
尼克
发布时间:2026-01-01
浏览: 次 std::find 是 C++ STL 中用于线性查找第一个匹配元素的算法,需包含 头文件,接受起始迭代器、结束迭代器和待查值三个参数,返回指向匹配元素的迭代器或 end()。
find 是 C++ STL 中最常用的查找算法之一,它在指定范围内线性搜索第一个匹配的元素,返回指向该元素的迭代器;如果没找到,就返回范围末尾的迭代器(通常是 end())。
基本用法:需要头文件和三个参数
使用 std::find 前要包含 头文件。它接受三个参数:
- 起始迭代器(如
v.begin()) - 结束迭代器(如
v.end(),注意不包含该位置) - 要查找的值(类型需与容器元素可比较)
例如,在 vector 中找数字 7:
#include
#include
#include
std::vectorv = {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;
支持所有支持迭代器的容器
不只是 vector,find 可用于 list、deque、array、string,甚至原生数组(配合指针):
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);
注意:map 和 unordered_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 (万一没找到)
对 string 或 vector 等连续容器,也可用 it - begin() 得到下标;但对 list 这类链表,只能用 std::distance(begin(), it) 计算位置。
# ai
# 的是
# 这类
# 它在
# 这是
# 第一个
# 而不
# 自定义
# 迭代
# 不适合
# auto
# go
# c++
# String
# if
# int
# 指针
# stream
# red
# operator
# 成员函数
# 结构体
# 算法
# 头文件
# Struct
# map
# ios
# const
# bool
# include
# Array
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Flask 表单数据通过 SMTP 发送邮件的完整
- 如何使用Golang实现多重错误处理_Golang
- 如何在 Django 中修改用户密码后保持会话不丢
- php修改数据怎么改富文本_update更新htm
- c++怎么调用nana库开发GUI_c++ 现代风
- Windows服务无法启动错误1067是什么_进程
- Win11怎么关闭粘滞键_彻底禁用Windows
- 如何用正则表达式精确匹配最多含一个换行符的起止片段
- Win11怎么关闭通知消息_屏蔽Windows 1
- 如何在 Go 中创建包含 map 的 slice(
- Win11怎么设置默认PDF阅读器 Win11修改
- MAC怎么在照片中添加水印_MAC自带编辑工具文字
- Windows电脑键盘突然失灵怎么办?(驱动与硬件
- php转exe用什么工具打包快_高效打包软件推荐【
- Windows10如何更改鼠标灵敏度_Win10鼠
- Win11怎么查看局域网电脑_Windows 11
- 如何使用Golang处理网络超时错误_Golang
- C++中引用和指针有什么区别?(代码说明)
- XAMPP 启动失败(Apache 突然停止)的终
- php中作用域操作符能访问私有静态属性吗_访问权限
- 如何有效拦截拼接式恶意域名的垃圾信息
- 如何使用Golang读取日志文件_Golang b
- 如何使用Golang实现容器健康检查_监控和自动重
- Drupal 中 HTML 链接被重复转义导致渲染
- 如何使用Golang实现负载均衡_分发请求到多个服
- c++怎么编写动态链接库dll_c++ __dec
- Windows7怎么找回经典开始菜单_Window
- Win11任务栏怎么固定应用 Win11将软件图标
- Mac怎么设置登录项_Mac管理开机自启动程序【教
- Win10系统怎么查看显卡温度_Win10任务管理
- Mac怎么安装软件_Mac安装dmg与pkg文件的
- Win11关机快捷键是什么_Win11快速关机方法
- Win11怎么关闭透明效果_Windows11辅助
- Win10如何更改任务栏高度_Windows10解
- Windows10系统怎么查看显卡驱动_Win10
- Win10怎么设置开机密码_Windows10账户
- Go语言中正确反序列化多个同级XML元素为结构体切
- Win10怎样清理C盘Steam游戏缓存_Win1
- php订单日志权限怎么设_php订单日志文件权限设
- Linux如何使用Curl发送请求_Linux下A
- php转mp4怎么设置帧率_调整php生成mp4视
- 如何使用Golang包导出规则_控制函数和变量可见
- Win11怎么关闭通知中心_Windows11系统
- mac怎么查看wifi密码_MAC查看已连接WiF
- Windows10系统服务优化指南_Win10禁用
- 如何使用Golang table-driven f
- php订单日志怎么在swoole写_php协程sw
- 如何更改Windows资源管理器的默认启动位置?(
- PHP 中 require() 语句返回值的用法详
- Win10系统更新错误0x80240034怎么办


QQ客服