zoukankan      html  css  js  c++  java
  • priority_queue的用法

    #include<iostream>
    #include<queue>
    using namespace std;
    typedef long long LL;
    typedef pair<int, int> P;
    struct node{
        int x,y;
        node(){}
        node(int cx,int cy):x(cx),y(cy){}
        friend bool operator<(const node& a,const node& b)
        {
            return a.x > b.x; //由小到大
            //反之, a.x < b.x //由大到小 
        }
        void out()
        {
            cout<<"("<<x<<","<<y<<")"<<endl;
        }
    };
    void test_1()
    {
        priority_queue<LL,vector<LL>,greater<LL> > que;//由小到大出队 
        que.push(1);
        que.push(5);
        que.push(3);
        while(!que.empty())
        {
            LL e=que.top();que.pop();
            cout<<e<<endl;
        }
    }
    void test_2()
    {
        priority_queue<LL> que;//由大到小出队 
        que.push(1);
        que.push(5);
        que.push(3);
        while(!que.empty())
        {
            LL e=que.top();que.pop();
            cout<<e<<endl;
        }
    }
    void test_3()
    {
        priority_queue<P,vector<P>,greater<P> > que;//按first的值由小到大出队 
        //同理 priority_queue<P> 则结果按first的值由大到小出队 
        que.push(P(3,5));
        que.push(P(1,3));
        que.push(P(2,6));
        while(!que.empty())
        {
            P pr=que.top();que.pop();
            cout<<pr.first<<" "<<pr.second<<endl;
        }
    }
    void test_4()
    {
        priority_queue<node> que;
        que.push(node(3,5));
        que.push(node(1,3));
        que.push(node(2,6));
        while(!que.empty())
        {
            node e=que.top();que.pop();
            e.out();
        }
    }
    int main()
    {
        test_4();
        return 0;
    }
  • 相关阅读:
    python活力练习Day13
    检测一个字符串在另外一个字符串中的位置
    Python活力练习Day12
    Python多进程与单进程效率对比
    HTML-Note
    Python判断自定义的参数格式是否正确
    图片的灰与彩
    Git常用命令
    Linux 单引号和双引号的区别
    类函数中获取进程池对象的地址
  • 原文地址:https://www.cnblogs.com/program-ccc/p/4927411.html
Copyright © 2011-2022 走看看