在leetcode刷题的时候发现原来sort还有这个用法记录一下(原谅我的无知)。
sort的用法
添加头文件 #include<algorithm>
sort源码解析
- sort(pp.begin(),pp.end(),排序方式)
(1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地址)
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。 - 那么怎么才能使其从大到小排序呢!
#include<iostream>
#include<algorithm>
using namespace std;
bool complare(int a,int b)
{
return a>b;
}
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
sort(a,a+10,complare);//在这里就不需要对complare函数传入参数了,
//这是规则
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
return 0;
}
- 那么假使对于一个结构体进行排序呢?是否可以使用sort函数呢?
struct Interval {
int start;
int end;
};
vector<Interval>& intervals;
sort(intervals.begin(), intervals.end(), [](Interval &a, Interval &b) {return a.start < b.start;});
//可以直接将结构体进行排序
又或者如此;
bool cmp(interval x,interval y)
{
return x.start>y.start;
}
sort(intervals.begin(), intervals.end(), cmp);
网友评论