std::sort 对 std::vector 排序最直接高效,基础升序只需传入 begin() 和 end() 迭代器,默认按元素小于关系排序。

用 std::sort 对 std::vector 排序最直接、高效,关键在于传对迭代器和可选的比较规则。
基础升序排序(默认)
只需传入 begin() 和 end() 迭代器,sort 默认按 比较,适用于内置类型或已重载 operator 的自定义类:
#include#include std::vector v = {3, 1, 4, 1, 5}; std::sort(v.begin(), v.end()); // → {1, 1, 3, 4, 5}
降序排序(用 greater)
头文件 提供现成的函数对象:
-
std::sort(v.begin(), v.end(), std::greater—— 适用于数值类型()) - 等价写法:
std::sort(v.begin(), v.end(), [](int a, int b) { return a > b; })
自定义类型排序(lambda 或函数指针)
比如按结构体某个成员排序,推荐用 lambda 表达式,简洁且作用域清晰:
立即学习“C++免费学习笔记(深入)”;
struct Person {
std::string name;
int age;
};
std::vector people = {{"Alice", 30}, {"Bob", 25}};
std::sort(people.begin(), people.end(),
[](const Person& a, const Person& b) { return a.age < b.age; });
// 按年龄升序
- 捕获列表为空
[],不需外部变量时最安全 - 参数加
const&避免拷贝,提升性能 - 返回
true表示 a 应排在 b 前面(即 a 在 b 左侧)
注意:sort 要求随机访问迭代器,vector 完全满足
std::vector 的迭代器支持 +、-、[] 等操作,因此能用 std::sort(内部基于快速排序/堆排序/插入排序混合实现)。而 std::list 不行,得用其成员函数 sort()。
不复杂但容易忽略











