sort用法
sort(起始地址,结束地址的下一位,*比较函数)
自定义比较函数
比较函数可以是函数或者lambda表达式(匿名函数)
#include <bits/stdc++.h>
using namespace std;
bool cmp(const int &u, const int &v)
{
return u > v;
}
int main()
{
vector<int> v = {5,1,3,9,11};
sort(v.begin(), v.end(), [&](const int &u, const int &v){
return u > v;
});
for(auto i : v)
cout << i << " ";
return 0;
}
lambda写法
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> v = {5,1,3,9,11};
//[&] &不写为拷贝方式,写进去为引用方式
sort(v.begin(), v.end(), [&](const int &u, const int &v){
return u > v;
});
for(auto i : v)
cout << i << " ";
return 0;
}
结构体写法
struct Node{
int u, v;
bool operator < (const Node &m) const
{
return u == m.u ? v< m.v : u < m.u;
}
};
注:快速实现从大到小可以使用此方法
sort(w, w + n, greater<int>());