• priority_queue的用法


    priority_queue本质是一个堆,默认为按照元素值的大小从大到小排序

    1.简单的使用方法

    //二叉树  默认为小根堆
    #include<iostream>
    #include<queue>
    using namespace std;
    int main()
    {
        priority_queue<int>  pq;
        pq.push(1);
        cout<<pq.size()<<endl;
        while(pq.empty()){
            cout<<pq.top()<<" ";
            pq.pop();
        }
        cout<<endl;
    } 
    View Code

    默认状态:

    #include<iostream>
    #include<queue>
    using namespace std;
     
    int main(){
        priority_queue<int> p;
        p.push(1);
        p.push(2);
        p.push(8);
        p.push(5);
        p.push(43);
        for(int i=0;i<5;i++){
            cout<<p.top()<<endl;
            p.pop();
        }
        return 0;
    }
    View Code

    优先输出小数据:

    priority_queue<int, vector<int>, greater<int> > p;

    #include<iostream>
    #include<queue>
    using namespace std;
     
    int main(){
        priority_queue<int, vector<int>, greater<int> >p;
        p.push(1);
        p.push(2);
        p.push(8);
        p.push(5);
        p.push(43);
        for(int i=0;i<5;i++){
            cout<<p.top()<<endl;
            p.pop();
        }
        return 0;
    }
    View Code

    2.重载  “<”  定义优先级

    #include<iostream>
    #include<queue>
    #include<cstdlib>
    using namespace std;
    struct Node{
        int x,y;
        Node(int a=0, int b=0):
            x(a), y(b) {}
    };
     
    struct cmp{
        bool operator()(Node a, Node b){
            if(a.x == b.x)    return a.y>b.y;
            return a.x>b.x;
        }
    };
     
    int main(){
        priority_queue<Node, vector<Node>, cmp>p;
        
        for(int i=0; i<10; ++i)
            p.push(Node(rand(), rand()));
            
        while(!p.empty()){
            cout<<p.top().x<<' '<<p.top().y<<endl;
            p.pop();
        }//while
        //getchar();
        return 0;
    }
    View Code
  • 相关阅读:
    liunx知识点滴积累(1)
    Regsvr32命令的使用
    QTP知识点滴积累
    LoadRunner的Apache的监控
    CMM和过程改进的“妙语” 集锦
    Linux 性能调优的几种方法
    数据库学习笔录(转载)
    Windows性能管理解析
    使用NUnit在.Net编程中进行单元测试
    Google 工程师文化 互助篇
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10366298.html
Copyright © 2020-2023  润新知