std::sort、std::find 和 std::for_each 是 C++ 中常用算法,分别用于排序、查找和遍历操作,需包含 头文件,作用于迭代器区间,提升代码简洁性与可读性。

在C++中,std::algorithm 库提供了大量实用的通用算法函数,它们作用于容器或数组的迭代器区间,极大简化了常见操作。要使用这些函数,需要包含头文件
1. 排序:std::sort
std::sort 用于对指定范围内的元素进行排序,默认按升序排列。它要求容器支持随机访问迭代器(如 vector、array 等)。
基本语法:
std::sort(起始迭代器, 结束迭代器);- 可选第三个参数为比较函数或函数对象,用于自定义排序规则。
示例:
立即学习“C++免费学习笔记(深入)”;
#include#include #include std::vector nums = {5, 2, 8, 1, 9}; // 升序排序 std::sort(nums.begin(), nums.end()); // 降序排序(使用 greater) std::sort(nums.begin(), nums.end(), std::greater ()); // 自定义比较函数 std::sort(nums.begin(), nums.end(), [](int a, int b) { return a > b; // 降序 });
2. 查找:std::find
std::find 在指定范围内查找第一个等于给定值的元素,返回其迭代器;若未找到,则返回结束迭代器。
基本语法:
std::find(起始迭代器, 结束迭代器, 目标值);
示例:
立即学习“C++免费学习笔记(深入)”;
#include#include #include std::vector nums = {10, 20, 30, 40, 50}; auto it = std::find(nums.begin(), nums.end(), 30); if (it != nums.end()) { std::cout << "找到元素:" << *it << std::endl; } else { std::cout << "未找到" << std::endl; }
注意:std::find 是基于值的比较,适用于基本类型和重载了 == 操作符的类类型。
3. 遍历执行:std::for_each
std::for_each 对范围内的每个元素执行指定的操作(函数、函数对象或 lambda 表达式),常用于无副作用的遍历处理。
基本语法:
std::for_each(起始迭代器, 结束迭代器, 函数);
示例:
立即学习“C++免费学习笔记(深入)”;
#include#include #include std::vector nums = {1, 2, 3, 4, 5}; // 使用 lambda 打印每个元素 std::for_each(nums.begin(), nums.end(), [](int n) { std::cout << n << " "; }); std::cout << std::endl; // 或者修改元素(注意:lambda 需捕获引用) std::for_each(nums.begin(), nums.end(), [](int& n) { n *= 2; });
与范围 for 循环相比,std::for_each 更适合配合算法风格编程,也便于传递函数对象或绑定逻辑。
基本上就这些。掌握 sort、find、for_each 能解决大多数基础数据处理问题。关键是理解它们都依赖迭代器,且不直接操作容器本身,而是操作一段元素区间。只要容器提供合适的迭代器,这些函数就能工作。不复杂但容易忽略细节,比如 find 返回的是迭代器而非索引,sort 默认是升序等。熟练使用后,代码会更简洁清晰。










