C++ STL算法库怎么用?C++常用算法函数(sort, find)教程【效率提升】
技术百科
裘德小鎮的故事
发布时间:2026-01-01
浏览: 次 STL算法库是作用于容器的通用函数,不管理内存;sort需传入起始和结束迭代器,默认升序,支持greater()降序及lambda自定义规则。
STL算法库不是容器,而是作用于容器的一组通用函数——它们不管理内存,只操作已有数据,用对了能省下大量手写循环的功夫。
sort:排序要传迭代器,别传整个容器
sort需要两个迭代器(起点和终点),不是容器本身。默认升序,支持自定义比较逻辑。
- 基本用法:
sort(v.begin(), v.end());—— 对 vector 升序排列 - 降序:
sort(v.begin(), v.end(), greater()); - 自定义规则(比如按字符串长度):
sort(vs.begin(), vs.end(), [](const string& a, const string& b) { return a.size() - 注意:只对支持随机访问的容器(vector、deque、array)高效;list 要用
list::sort()成员函数
find / find_if:找值 or 找满足条件的元素
返回第一个匹配项的迭代器,没找到就返回 end(),务必检查!
-
find(v.begin(), v.end(), 42);—— 找值为 42 的元素 -
find_if(v.begin(), v.end(), [](int x) { return x % 2 == 0; });—— 找第一个偶数 - 用法统一:所有算法都靠迭代器范围工作,跟容器类型无关(vector、list、array 都行)
- 小技巧:配合
std::distance可转成下标(仅限支持随机访问的迭代器):auto it = find(v.begin(), v.end(), 5); int idx = distance(v.begin(), it);
其他高频实用算法
不用自己写 for 循环就能干很多事:
-
count / count_if:统计出
现次数,比如 count(v.begin(), v.end(), 0) -
accumulate(在中):求和、拼接、自定义折叠: accumulate(v.begin(), v.end(), 0)或accumulate(s.begin(), s.end(), string(""), plus()) -
transform:批量转换,比如把 vector 全部平方:transform(v.begin(), v.end(), v.begin(), [](int x) { return x*x; }); -
copy / copy_if:复制带条件,比手写 if+push_back 更清晰
基本上就这些。STL 算法不难,关键是记住“它只认迭代器范围”,别传容器,也别漏写头文件(、 等)。用熟之后,代码更短、意图更明、出错更少。
# 第一个
# 已有
# 自定义
# 要用
# 迭代
# 作用于
# 仅限
# auto
# go
# 循环
# c++
# String
# if
# int
# 字符串
# 排列
# 成员函数
# 算法
# for
# count
# Lambda
# const
# transform
# sort
# 只对
# copy
# 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; ?>
】
相关推荐
- Win11怎么更改计算机名_Windows11系统
- 如何在 ACF 中正确更新嵌套多层 Group 字
- php增删改查报错1054怎么办_字段名错误排查修
- C++ static_cast和dynamic_c
- Windows10系统怎么查看硬盘健康_Win10
- php修改数据怎么批量改状态_批量更新status
- 如何在网页无标准表格标签时高效提取结构化数据
- Win11怎么关闭资讯和兴趣_Windows11任
- Win11怎么开启HDR模式_Windows 11
- mac怎么打开终端_MAC终端Terminal使用
- Mac如何解压zip和rar文件?(推荐免费工具)
- php做exe支持多线程吗_并发处理实现方式【详解
- Win11怎么开启上帝模式_创建Windows 1
- Python面向对象实战讲解_类与设计模式深入理解
- Win11怎么关闭通知消息_屏蔽Windows 1
- Linux如何使用grep搜索文件内容_Linux
- Windows任务计划服务异常原因_任务调度失败的
- 如何在Golang中实现文件下载_Golang文件
- mac怎么查看wifi密码_MAC查看已连接WiF
- Python字符串操作教程_切片拼接与格式化详解
- 如何在Golang中处理通道发送接收错误_防止阻塞
- c++怎么设置线程优先级与cpu亲和性_c++ 多
- Win11资源管理器卡顿怎么办 Win11文件资源
- Win10电脑怎么设置IP地址_Windows10
- Win11怎么设置麦克风权限_允许应用访问Win1
- Windows10如何更改系统字体大小_Win10
- Win10怎么查看内存时序参数_Win10CPU-
- c++ atoi和atof函数用法_c++字符数组
- Python文件和流处理指南_高效读写大体积数据文
- Python脚本参数接收_sys与argparse
- Win11怎么恢复旧版开始菜单_通过软件还原Win
- Linux怎么修改用户密码_Linux系统pass
- Win11怎么清理C盘系统错误报告_Win11清理
- 如何在 Go 中判断变量是否为函数类型
- Win11如何设置ipv6 Win11开启IPv6
- php本地部署后数据库连接报错_1045acces
- Win11 C盘满了怎么清理 Win11磁盘清理和
- C++ STL算法库怎么用?C++常用算法函数(s
- Windows10怎么查看系统激活状态_Windo
- VSC怎样用终端运行PHP_命令行执行脚本的步骤【
- Win11怎么恢复出厂设置_Win11重置此电脑保
- PHP cURL GET请求:正确设置请求头与身份
- c++的STL算法库find怎么用 在容器中查找指
- Windows如何使用注册表查找和删除项?(reg
- Win11笔记本怎么看电池健康度_Win11电池报
- 如何使用Golang反射创建map对象_动态生成键
- 如何使用 Selenium 正确获取篮球参考网站球
- Python包结构设计_大型项目组织解析【指导】
- Win11怎么更改任务栏颜色_Windows11个
- c++如何使用std::bind绑定函数参数_c+

现次数,比如
QQ客服