优先队列

来源:互联网 发布:unity3d底层 编辑:程序博客网 时间:2024/06/10 17:18
#include <iostream>#include <functional>#include <queue>using namespace std;struct node{    friend bool operator<(node n1,node n2)    {        return n1.priority<n2.priority;    }    int priority;    int value;};int main(){    const int len=5;    int i;    int a[len]={3,5,9,6,2};    //优先队列中从大到小输出    priority_queue<int>q1;    for(i=0;i<len;i++)        q1.push(a[i]);    for(int i=0;i<len;i++)    {        cout<<q1.top();        q1.pop();    }    cout<<endl;    //优先队列中从小到大输出    priority_queue<int,vector<int>,greater<int> >q2;    for(i=0;i<len;i++)        q2.push(a[i]);    for(i=0;i<len;i++)    {        cout<<q2.top();        q2.pop();    }    cout<<endl;    //按照某个优先级输出,该代码中为priority值大的先输出    priority_queue<node>q3;    node b[len];    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(i=0;i<len;i++)        q3.push(b[i]);    cout<<"优先级"<<'\t'<<"值"<<endl;    for(i=0;i<len;i++)    {        cout<<q3.top().priority<<'\t'<<q3.top().value<<endl;        q3.pop();    }    return 0;}

0 0
原创粉丝点击