结构体内部排序,和类的内部排序不一样。

关于结构体内嵌比较函数:

一般情况下:

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);

但是这种排序的方法比结构体内嵌比较函数的慢很多,有的时候超时可能就是排序写挫了。

最后修改:2022 年 02 月 18 日
如果觉得我的文章对你有用,请随意赞赏