优先队列讲解

来源:互联网 发布:邪恶帝软件下载 编辑:程序博客网 时间:2024/09/21 06:36
/*程序大意就是在这个优先队列里依次插入10、8、12、14、6,再输出。结果是什么呢?14 12 10 8 6也就是说,它是按从大到小排序的!*/#include<cstdio>#include<queue>using namespace std;priority_queue <int> q;int main(){    q.push(10),q.push(8),q.push(12),q.push(14),q.push(6);    while(!q.empty())        printf("%d ",q.top()),q.pop();}/*程序大意就是插入(10,100),(12,60),(14,40),(6,20),(8,20)这五个node。再来看看它的输出:(14,40) (12,60) (10,100) (8,20) (6,80)*/#include<cstdio>#include<queue>using namespace std;struct node{    int x,y;    bool operator <(const node & a) const//const的形式也不能改动    {        return x<a.x;//从大到小排序    }    /* bool operator <(const node &a) const    {        return x>=a.x;//从大倒小    }*/}k;priority_queue <node> q;int main(){    k.x=10,k.y=100; q.push(k);    k.x=12,k.y=60; q.push(k);    k.x=14,k.y=40; q.push(k);    k.x=6,k.y=80; q.push(k);    k.x=8,k.y=20; q.push(k);    while(!q.empty())    {        node m=q.top(); q.pop();        printf("(%d,%d) ",m.x,m.y);    }}//less<int>:14 12 10 8 6//greater<int>:6 8 10 12 14#include<cstdio>#include<queue>using namespace std;priority_queue <int,vector<int>,less<int> > p;priority_queue <int,vector<int>,greater<int> > q;int a[5]={10,12,14,6,8};int main(){    for(int i=0;i<5;i++)        p.push(a[i]),q.push(a[i]);    printf("less<int>:")    while(!p.empty())        printf("%d ",p.top()),p.pop();    pritntf("\ngreater<int>:")    while(!q.empty())        printf("%d ",q.top()),q.pop();}

原创粉丝点击