默认优先级是从大到小.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| struct cmp1{ bool operator () (int &a, int &b){ return a < b; } };
struct cmp2{ bool operator () (int &a, int &b){ return a > b; } };
struct node1{ int a, b; bool operator < (const node1 &temp) const{ return a + b < temp.a + temp.b; } };
struct node2{ int a, b; bool operator < (const node2 & temp) const{ return a + b > temp.a + temp.b; } };
int main(){ priority_queue<int>q1; priority_queue<int, vector<int> , less<int> >q2; priority_queue<int, vector<int> , cmp1>q3; priority_queue<int, vector<int>, greater<int> >q4; priority_queue<int, vector<int>, cmp2> q5;
priority_queue<node1>q6; priority_queue<node2>q7; return 0; }
|
如何理解结构体中overload的小于号呢? (只能重载小于号)
- 可以理解为重载后小于号作用是比较出数组中优先级更小的数据,如果返回的是某个数据值更大的一方则值越大优先级越小,相反则值越小优先级越大。
- 优先队列是输出优先级最高的数据的队列。
- 可以简单的记为与sort中的cmp函数效果相反。
恰似你一低头的温柔,较弱水莲花不胜寒风的娇羞, 我的心为你悸动不休。 --mingfuyan
千万不要图快——如果没有足够的时间用来实践, 那么学得快, 忘得也快。
原文作者: Mingfu Yan
原文链接: https://solodance.top/2020/06/26/优先队列定义优先级的方法/
版权声明: 转载请注明出处(必须保留作者署名及链接)