码迷,mamicode.com
首页 > 其他好文 > 详细

STL -最大最小堆 priority_queue

时间:2017-06-24 11:26:27      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:std   type   protected   优先   pair   void   return   ++   常用函数   

//添加头文件
#include<queue> using namespace std;

最大堆实现:

优先输出大数据
priority_queue<Type, Container, Functional>
Type为数据类型, Container为保存数据的容器,Functional为元素比较方式。
如果不写后两个参数,那么容器默认用的是vector,比较方式默认用operator<,也就是优先队列是大顶堆,队头元素最大。
#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;  
}  

最小堆实现:

    class CMyPair :public CVertex
    {
    public :
        CMyPair(CVertex *a, CVertex *b) {
            m_pair_a = a;
            m_pair_b = b;
            cost = 0;
        }
        ~CMyPair() {};
        double getCost() { return cost; }
        void setCost(double c) { cost = c; }
    protected:
        CVertex * m_pair_a;
        CVertex * m_pair_b;
        double cost;
    };
    struct cmp {
        bool operator()(CMyPair a, CMyPair b) {
            if (a.getCost()== b.getCost())  return a.getCost()>b.getCost();
            return a.getCost()>b.getCost();
        }
    };

priority_queue<CMyPair, vector<CMyPair>,cmp> heap;

常用函数:

heap.empty();
heap.push();
heap.pop();
heap.top();

 

STL -最大最小堆 priority_queue

标签:std   type   protected   优先   pair   void   return   ++   常用函数   

原文地址:http://www.cnblogs.com/Cherrylalala/p/7072606.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!