Loading... 结构体内部排序,和类的内部排序不一样。 关于结构体内嵌比较函数: 一般情况下: ```cpp struct node { int l,r; bool operator <(const node &a)const{ return r < a.r; } }a[maxn]; ``` 直接写比较函数是裸的r表示当前的值,如果r<a.r,那么就是从小到大排序,但是优先队列的是相反的。 sort默认为从小到大排序,优先队列默认为从大到小。 ```cpp 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); 当然也可以直接写一个比较的函数: ```cpp bool cmp(node a, node b) { return a.r < b.r; } ``` 用法就是sort(a,a+n,cmp); 但是这种排序的方法比结构体内嵌比较函数的慢很多,有的时候超时可能就是排序写挫了。 最后修改:2022 年 02 月 18 日 © 转载自他站 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,请随意赞赏