多维vector的sort,默认按照第一维进行从小到大排序
参考:https://blog.csdn.net/qq_39898780/article/details/121349269
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
vector<int>v{5,4,6,9,8,1};
sort(v.begin(), v.end());
for(auto n:v)cout<<n<<" ";
return 0;
}
// 输出为 1 4 5 6 8 9
降序排列(最简单),只需补充
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
vector<int>v{5,4,6,9,8,1};
sort(v.begin(), v.end(), greater<int>());
for(auto n:v)cout<<n<<" ";
return 0;
}
其他几种自定义方法参考文档
// 方法二:使用自定义函数对象
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;
});
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<vector<int> >e;
vector<int>a;
a.push_back(1);
a.push_back(2);
e.push_back(a);
a[1]=3;
e.push_back(a);
a[1]=3;
e.push_back(a);
a[0]=1;
a[1]=1;
e.push_back(a);
a[0]=0;
a[1]=4;
e.push_back(a);
for(int i=0;i<e.size();i++){
cout<<e[i][0]<<" "<<e[i][1]<<endl;
}
cout<<endl;
sort(e.begin(),e.end(),[](vector<int>x,vector<int>y){
return x[0]<y[0]||(x[0]==y[0]&&x[1]<y[1]);
});
for(int i=0;i<e.size();i++){
cout<<e[i][0]<<" "<<e[i][1]<<endl;
}
}
注意Lambda里面直接写return,不能写if判断这种。