结构体内部排序,和类的内部排序不一样。
关于结构体内嵌比较函数:
一般情况下:
struct node
{
int l,r;
bool operator <(const node &a)const{
return r < a.r;
}
}a[maxn];
直接写比较函数是裸的r表示当前的值,如果r<a.r,那么就是从小到大排序,但是优先队列的是相反的。
sort默认为从小到大排序,优先队列默认为从大到小。
struct node
{
int l,r;
bool operator <(const node &a)const
{
return r>a.r;
}
};
priority_queue<node> q;
那么这个优先队列是按r小的优先出队。
结构体内嵌比较函数的使用就是直接sort就可以,sort(a,a+n);
当然也可以直接写一个比较的函数:
bool cmp(node a, node b) {
return a.r < b.r;
}
用法就是sort(a,a+n,cmp);
但是这种排序的方法比结构体内嵌比较函数的慢很多,有的时候超时可能就是排序写挫了。