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;
    }
  • 相关阅读:
    java jni 调用c语言函数
    BeautifulSoup入门
    Python单引号、双引号、三个双引号的区别
    Request库的安装与使用
    awk命令入门
    sed命令入门
    编译生成protobuf的jar包
    编辑crontab添加Linux计划任务
    tar命令详解及使用实例
    MySQL用户管理
  • 原文地址:https://www.cnblogs.com/program-ccc/p/4927411.html
Copyright © 2011-2022 走看看