优先队列定义优先级的方法

默认优先级是从大到小.

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; // 以a + b 的值 最大值优先
    }
};

struct node2{
    int a, b;
    bool operator < (const node2 & temp) const{
        return a + b > temp.a + temp.b; // 以a + b 的值 最小值优先
    }
};

int main(){
    // 最大值优先
    priority_queue<int>q1;
    priority_queue<int, vector<int> , less<int> >q2; // 注意 less<int>>q2; 中间不加空格的话会报错, 因为是右移>> 运算符
    priority_queue<int, vector<int> , cmp1>q3;
    
    // 最小值优先
    priority_queue<int, vector<int>, greater<int> >q4; // 注意 greater<int>>q4; 中间不加空格的话会报错, 因为是右移>> 运算符
    priority_queue<int, vector<int>, cmp2> q5;

    // 结构体自定义优先级, 具体优先级顺序看上面
    priority_queue<node1>q6;
    priority_queue<node2>q7;
    return 0;
}

如何理解结构体中overload的小于号呢? (只能重载小于号)

  1. 可以理解为重载后小于号作用是比较出数组中优先级更小的数据,如果返回的是某个数据值更大的一方则值越大优先级越小,相反则值越小优先级越大。
  2. 优先队列是输出优先级最高的数据的队列。
  3. 可以简单的记为与sort中的cmp函数效果相反。
恰似你一低头的温柔,较弱水莲花不胜寒风的娇羞, 我的心为你悸动不休。  --mingfuyan

千万不要图快——如果没有足够的时间用来实践, 那么学得快, 忘得也快。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值