笔记——优先队列(常用)

来源:互联网 发布:firefly ubuntu 编辑:程序博客网 时间:2024/06/04 18:54
#include <queue>
#include <cstdio>
using namespace std;
struct node
{
    friend bool operator< (node n1, node n2)
    {
        return n1.priority<n2.priority;//<大的优先级高 >小的优先级高 
    }
    int priority;
    int value;
};
void solve2(){
priority_queue<node>que;
node b[10];
b[0].priority=6;b[0].value=1; 
b[1].priority=9;b[1].value=5; 
b[2].priority=2;b[2].value=3; 
b[3].priority=8;b[3].value=2; 
b[4].priority=1;b[4].value=4; 
for(int i=0;i<5;i++)
que.push(b[i]);
while(!que.empty()){
printf("%d %d\n",que.top().priority,que.top().value);
que.pop();
}
}
void solve1(){
/*从小到大*/
priority_queue<int,vector<int>,greater<int> >que;
que.push(5);
que.push(3);
que.push(2);
que.push(4);
que.push(6);
que.push(7);
while(!que.empty()){
printf("%d ",que.top());
que.pop();
}
printf("\n");
}
void solve0(){
/*从大到小*/
priority_queue<int>que;
que.push(5);
que.push(3);
que.push(2);
que.push(4);
que.push(6);
while(!que.empty()){
printf("%d ",que.top());
que.pop();
}
printf("\n");
}
int main()
{
solve0();
solve1();
solve2();
}
原创粉丝点击