std::sort是最常用vector排序方法,默认升序,传入begin()和end()迭代器;支持降序(greater或lambda)、自定义类型(重载

用 std::sort 对 std::vector 排序最常用也最直接,只需传入起始和结束迭代器,它默认按升序排列元素。
基础升序排序
对存储基本类型(如 int、double)的 vector,直接调用 std::sort(vec.begin(), vec.end()) 即可:
- 头文件需包含
-
vec.begin()指向首元素,vec.end()指向末尾之后的位置(左闭右开区间) - 原地排序,不额外分配空间,时间复杂度为 O(n log n)
降序排序
传入 std::greater 作为第三个参数即可实现降序:
std::sort(vec.begin(), vec.end(), std::greater()); - 也可用 lambda 表达式:
[](int a, int b) { return a > b; } - 注意:lambda 需捕获为空,且返回
true表示“a 应排在 b 前面”
对自定义类型排序
若 vector 存的是结构体或类,需明确比较逻辑:
立即学习“C++免费学习笔记(深入)”;
- 重载
operator:让类型支持默认升序 - 或提供外部比较函数/lambda,例如按成员
name字典序升序:std::sort(v.begin(), v.end(), [](const Person& a, const Person& b) { return a.name - 确保比较函数满足严格弱序(irreflexive、transitive、antisymmetric)
排序部分元素
只对子区间排序也很方便,比如只排后一半:
auto mid = vec.begin() + vec.size() / 2;std::sort(mid, vec.end());- 注意迭代器有效性:确保
mid不越界(vec.size() > 0)










