priority_queue优先队列容器

priority_queue优先队列容器

一、原理

    优先队列也是一种从一端入队,另一端出队的队列。不同于一般队列的是,队列中最大的元素总是位于队首位置,因此总是将当前队列中的最大元素出队。 

    C++ STL优先队列的泛化,底层默认采用vector向量容器,使得队列容器的元素可做数组操作,从而应用堆算法找出当前队列最大元素,并将它调整到队首位置,确保最大元素先出队。(堆算法(heap algorithm)具有nlog(n)阶的算法时间复杂度)。优先队列可看作容器适配器,将底层的序列容器vector转换为优先队列priortity_queue。

二、应用

仅需取队首和队尾元素的操作,因此priority_queue优先队列容器不提供迭代器。

1、创建

(1)priority_queue() 

默认的构造函数,创建一个空的 priority_queue 对象。

priority_queue<int> pq;//使用默认的vector为底层容器,创建了一个空的优先队列对象pq,数据元素为int类型。

(2)priority_queue(const priority_queue&) 

复制构造函数,用一个优先队列对象创建新的优先队列对象。

//priority_queue<int, list<int> > pq1; 

priority_queue<int, list<int> > pq2(pq1); //利用priority_queue对象pq1,创建一个以双向链表为底层容器的priority_queue对象pq2。

2、入队和出队

void push(const value_type& x) //插入,入队

void pop() //出队,删除队首元素

3、取队首元素

const value_type& top() const //。这个函数实际是调用了底层容器的front函数。读取优先队列的队首元素。

4、其它

1)bool empty()//判断是否为空

2)size_type size()//返回优先队列的当前元素个数。 

注意:要包含的头文件也是queue.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值