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

STL算法库是C++标准库中非常实用的一部分,它提供了一组与容器解耦的通用函数,操作对象是迭代器而非具体容器类型。只要容器支持相应迭代器(如vector、list、array等),就能直接使用这些算法,无需自己重写逻辑。
find:查找元素是否存在
find在指定范围内线性查找第一个匹配值,返回指向该元素的迭代器;未找到则返回末尾迭代器(如end())。
注意:必须包含#include
- 用法示例:
#include#include #include int main() { std::vector
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++免费学习笔记(深入)”;
默认升序,也可传入自定义比较函数(如std::greater
- 基础用法:
std::vectorv = {3, 1, 4, 1, 5}; std::sort(v.begin(), v.end()); // → {1, 1, 3, 4, 5} // 降序 std::sort(v.begin(), v.end(), std::greater
()); // 自定义规则:按绝对值排序 std::sort(v.begin(), v.end(), [](int a, int b) { return std::abs(a) < std::abs(b); });
copy:安全复制一段数据到另一容器
copy不检查目标空间是否足够,因此目标容器需提前分配好空间(如resize或reserve),或使用back_inserter适配器自动追加。
- 常见写法对比:
std::vectorsrc = {10, 20, 30}; std::vector dst1(src.size()); // 预分配 std::copy(src.begin(), src.end(), dst1.begin()); // OK std::vector
dst2; std::copy(src.begin(), src.end(), std::back_inserter(dst2)); // 自动push_back // 复制到C数组也行(确保空间够) int arr[10]; std::copy(src.begin(), src.end(), arr);
基本上就这些。关键是记住三个要素:头文件










