个人简单记录一下sort函数的用法,方便下次直接使用
- sort包含在头文件
<algorithm>
中,用于对数组进行排序 - sort可以有三个参数,
sort(begin,end,cmp)
,第三个参数可以自己定义排序的规则,从而可以对二维数组进行排序等。 - 基本用法
数组定义:
vector<int>nums;
- 默认:
sort(nums.begin(),nums.end());
对nums数组进行升序排序 - 自定义以进行降序排序
bool cmp(int x, int y) {
return x > y;
}
sort(nums.begin(),nums.end(),cmp);
- 对二维数组自定义规则排序
二维数组:vector<vector<int>>nums;
例:按照每个子数组中第一个数递减,第二个递增排序
#include <iostream>
#include <algorithm>
#include<vector>
using namespace std;
//核心代码
bool cmp(vector<int>x, vector<int>y){
return x[0]>y[0]||x[0]==y[0]&&x[1]<y[1];
}
void show(vector<int>v){
cout<<v[0]<<" "<<v[1]<<endl;
}
int main() {
vector<vector<int>>nums={{1,5},{10,4},{4,6}};
sort(nums.begin(),nums.end(),cmp);
for_each(nums.begin(),nums.end(),show);
system("pause");
return 0;
}
运行结果如下:
*第三个参数也可不在外部额外定义排序规则,可以直接写在括号里,例如
sort(nums.begin(),nums.end(),[&](int x,int y){return x>y});
//或者
sort(nums.begin(),nums.end(),[&](auto& x, auto& y){return x[0]>y[0] || x[0]==y[0] && x[1]<y[1];});