码迷,mamicode.com
首页 > 其他好文 > 详细

priority_queue的用法

时间:2015-11-01 12:39:31      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:

#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;
}

 

priority_queue的用法

标签:

原文地址:http://www.cnblogs.com/program-ccc/p/4927411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!