优先队列的一些使用

#include<bits/stdc++.h>
using namespace std;
struct cmp1{
    bool operator ()(int &a,int &b){
        return a<b;//最小值优先
    }
};
struct NODE {
    int x;
    bool operator < (const NODE &a) const {
        return x>a.x;
    }
}num[7]={0,1234,23,12,14,555,632};
struct NODE2 {
    int x,y;
    bool operator < (const NODE2 &a) const {
        if(x==a.x) return y<a.y;
        else return x<a.x;
    }
};
int main()
{
    int a[7]={0,1234,23,12,14,555,632};
    //优先队列默认排升序,从最后一个出
    priority_queue<int> q;  //默认最大值优先
    priority_queue<int,vector<int>,greater<int> > q1;  //注意> >中要有空格 最小值优先
    priority_queue<int,vector<int>,less<int> > q2;  //最大值优先
    priority_queue<int,vector<int>,cmp1> q3;  //自定义比较
    priority_queue<NODE> qn1;       //自定义的结构
    priority_queue<NODE2> qn2;      //自定义的结构

    for(int i=0;i<7;i++)
        q.push(a[i]);
    while(!q.empty()) {
        cout << q.top() << " ";
        q.pop();
    }
    cout << endl;
    for(int i=0;i<7;i++)
        q1.push(a[i]);
    while(!q1.empty()) {
        cout << q1.top() << " ";
        q1.pop();
    }
    cout << endl;
    for(int i=0;i<7;i++)
        q2.push(a[i]);
    while(!q2.empty()) {
        cout << q2.top() << " ";
        q2.pop();
    }
    cout << endl;
    for(int i=0;i<7;i++)
        q3.push(a[i]);
    while(!q3.empty()) {
        cout << q3.top() << " ";
        q3.pop();
    }
    cout << endl;
    for(int i=0;i<7;i++)
        qn1.push(num[i]);
    while(!qn1.empty()) {
        cout << qn1.top().x << " ";
        qn1.pop();
    }
    NODE2 num2[7];
    num2[0].x=9;   num2[1].x=92; num2[2].x=23; num2[3].x=23;
    num2[0].y=11;  num2[1].y=2;  num2[2].y=112;num2[3].y=124;
    num2[4].x=9;   num2[5].x=41; num2[6].x=9;
    num2[4].y=1222;num2[5].y=11; num2[6].y=12;
    for(int i=0;i<7;i++)
        qn2.push(num2[i]);
    while(!qn2.empty()) {
        cout << qn2.top().x << " " << qn2.top().y << endl;
        qn2.pop();
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值