• 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;
    }
  • 相关阅读:
    tomcat自启动的最简单的方法
    Eclipse引入DTD文件
    MyBatis框架之基本知识介绍
    【转】Linux系统安装Redis详细过程
    Spring MVC + Spring + MyBatis 框架整合
    Spring框架之IoC和AOP
    Mysql 时间相关
    【转】Spring事务详解
    Spring的注解问题
    关于Calendar的一些用法总结
  • 原文地址:https://www.cnblogs.com/program-ccc/p/4927411.html
Copyright © 2020-2023  润新知