STL算法库提供与容器解耦的通用函数,操作迭代器;find线性查找并返回迭代器,sort对随机访问容器排序,copy安全复制需确保目标空间足够。

STL算法库是C++标准库中非常实用的一部分,它提供了一组与容器解耦的通用函数,操作对象是迭代器而非具体容器类型。只要容器支持相应迭代器(如vector、list、array等),就能直接使用这些算法,无需自己重写逻辑。
find在指定范围内线性查找第一个匹配值,返回指向该元素的迭代器;未找到则返回末尾迭代器(如end())。
注意:必须包含#include
#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要求迭代器支持随机访问(如vector、array、deque),不能用于list(可用list::sort成员函数)。
立即学习“C++免费学习笔记(深入)”;
默认升序,也可传入自定义比较函数(如std::greater
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不检查目标空间是否足够,因此目标容器需提前分配好空间(如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);基本上就这些。关键是记住三个要素:头文件
以上就是C++中的STL算法库如何使用?(find/sort/copy示例)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号