头文件:#include
示例如下,默认升序
#include#include #include using namespace std; int main(){ vector vec{5,4,6,9,8,1}; sort(vec.begin(), vec.end());// 默认升序 for(auto n:vec) cout< 降序排列(最简单),只需补充
// 方法一:使用标准库比较函数对象 sort(vec.begin(), vec.end(), std::greater()); 其他几种自定义方法参考文档
// 方法二:使用自定义函数对象 struct { bool operator()(int a, int b) const { return a > b; } } customLess; sort(s.begin(), s.end(), customLess);// 方法三:借助lambda表达 std::sort(s.begin(), s.end(), [](int a, int b) { return a > b; });复杂度-->快速排序
vector多维数组比较默认按照第一个维度排序
如果需要对其他维度排序,就需要自己写比较函数
这里用lambda表达来实现
vectorvector结构体比较>vec(5, vector (5));//构造5x5数组 sort(vec.begin(), vec.end(), [](const vector &a, const vector &b){ return a[1]>b[1]; // 降序 });// 其他维度同理 自定义函数即可,举个简单的例子
我们希望按照结构体的id排序
struct stu{ int id; int age; string name; }; bool sort_by_id(const stu &s1, const stu &s2){ return s1.id < s2.id; // 升序 }保留相同元素相对位置比较stl库中的sort使用的是快速排序(没记错的话),效率比较高
但是如果两个元素大小相同,可能会在排序的过程中相对顺序发生改变
快速排序是一个不稳定的算法,在经过排序之后,可能会对相同值的元素的相对位置造成改变。
因此,如果想保持相对位置不改变,可以使用stable_sort()
基本用法和sort差不多,具体案例见文档



