首页 > 后端开发 > C++ > 正文

C++中的STL算法库如何使用?(find/sort/copy示例)

裘德小鎮的故事
发布: 2025-12-15 16:15:07
原创
620人浏览过
STL算法库提供与容器解耦的通用函数,操作迭代器;find线性查找并返回迭代器,sort对随机访问容器排序,copy安全复制需确保目标空间足够。

c++中的stl算法库如何使用?(find/sort/copy示例)

STL算法库是C++标准库中非常实用的一部分,它提供了一组与容器解耦的通用函数,操作对象是迭代器而非具体容器类型。只要容器支持相应迭代器(如vector、list、array等),就能直接使用这些算法,无需自己重写逻辑。

find:查找元素是否存在

find在指定范围内线性查找第一个匹配值,返回指向该元素的迭代器;未找到则返回末尾迭代器(如end())。

注意:必须包含#include gorithm>,且元素需支持==比较。

  • 用法示例:
#include <vector>
#include <algorithm>
#include <iostream>
<p>int main() {
std::vector<int> v = {3, 1, 4, 1, 5};
auto it = std::find(v.begin(), v.end(), 4);
if (it != v.end()) {
std::cout << "找到,位置:" << (it - v.begin()) << "\n"; // 输出:2
}
}
登录后复制

sort:对随机访问迭代器容器排序

sort要求迭代器支持随机访问(如vector、array、deque),不能用于list(可用list::sort成员函数)。

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

ChatCut
ChatCut

AI视频剪辑工具

ChatCut 1086
查看详情 ChatCut

默认升序,也可传入自定义比较函数(如std::greater降序,或lambda)。

  • 基础用法:
std::vector<int> v = {3, 1, 4, 1, 5};
std::sort(v.begin(), v.end()); // → {1, 1, 3, 4, 5}
<p>// 降序
std::sort(v.begin(), v.end(), std::greater<int>());</p><p>// 自定义规则:按绝对值排序
std::sort(v.begin(), v.end(), [](int a, int b) {
return std::abs(a) < std::abs(b);
});
登录后复制

copy:安全复制一段数据到另一容器

copy不检查目标空间是否足够,因此目标容器需提前分配好空间(如resize或reserve),或使用back_inserter适配器自动追加。

  • 常见写法对比:
std::vector<int> src = {10, 20, 30};
std::vector<int> dst1(src.size()); // 预分配
std::copy(src.begin(), src.end(), dst1.begin()); // OK
<p>std::vector<int> dst2;
std::copy(src.begin(), src.end(), std::back_inserter(dst2)); // 自动push_back</p><p>// 复制到C数组也行(确保空间够)
int arr[10];
std::copy(src.begin(), src.end(), arr);
登录后复制

基本上就这些。关键是记住三个要素:头文件、迭代器区间[left, right)、目标空间要安全。用熟了比手写循环更简洁可靠。

以上就是C++中的STL算法库如何使用?(find/sort/copy示例)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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