zoukankan      html  css  js  c++  java
  • 优先队列

    在 c++ 的 stl 库中有封装好的 优先队列

    1.

    priority_queue<int>que; // 最普通的优先队列,默认优先取出最大的元素  
    

    2 .

    priority_queue<int, vector<int>, greater<int> >que; // 最普通的优先队列,默认优先取出最小的元素, 若将greater 改为 less ,优先取出最大的元素
    

    3.

    priority_queue<node>que;  // 结构体中必须要写运算重载符
       
    

    模板:

    #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};  
        //示例1  
        priority_queue<int> qi;  //普通的优先级队列,按从大到小排序  
        for(i = 0; i < len; i++)  
            qi.push(a[i]);  
        for(i = 0; i < len; i++)  
        {  
            cout<<qi.top()<<" ";  
            qi.pop();  
        }  
        cout<<endl;  
        //示例2  
        priority_queue<int, vector<int>, greater<int> > qi2;  //从小到大的优先级队列,可将greater改为less,即为从大到小  
        for(i = 0; i < len; i++)  
            qi2.push(a[i]);  
        for(i = 0; i < len; i++)  
        {  
            cout<<qi2.top()<<" ";  
            qi2.pop();  
        }  
        cout<<endl;  
        //示例3  
        priority_queue<node> qn;  //必须要重载运算符  
        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++)  
            qn.push(b[i]);  
        cout<<"优先级"<<'	'<<"值"<<endl;  
        for(i = 0; i < len; i++)  
        {  
            cout<<qn.top().priority<<'	'<<qn.top().value<<endl;  
            qn.pop();  
        }  
        return 0;  
    }
    
    东北日出西边雨 道是无情却有情
  • 相关阅读:
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
  • 原文地址:https://www.cnblogs.com/ccut-ry/p/7777559.html
Copyright © 2011-2022 走看看