STL中的序列式容器——priority_queue(优先队列)

STL中的序列式容器——priority_queue(优先队列)

  priority_queue,即“优先队列”。普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。
  priority_queue是C++ STL的一个重要成员,使用它时需要包含头文件:

#include <queue>;

  priority_queue是容器适配器的一种,容器适配器中的数据是以不同优先级的方式组织的。

一、priority_queue 的初始化

有以下方式,举例说明如下:

queue<int> a;
queue<int> b(a); //拷贝队列a给队列b

二、priority_queue 对象的重要操作

列举如下:

a.push(5); //将5压入队列的末端
a.pop(); //弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值
a.top(); //返回优先队列中有最高优先级的元素
a.empty(); //判断a是否为空,空则返回ture,不空则返回false
a.size(); //返回队列的长度
a=b; //队列b赋值给队列a

三、优先级的设定

可以有以下几种方式,列举如下:

struct cmp1
{
    bool operator ()(const int &a,const int &b)
    {
       return a>b;//最小值优先
   	}
};
struct cmp2
{
	bool operator ()(const int &a,const int &b)
	{
	    return a<b;//最大值优先
	}
};
struct node1
{
	int u;
	bool operator < (const node1 &a) const
	{
		return u>a.u;//最小值优先
	}
};
struct node2
{
	int u;
	bool operator < (const node2 &a) const
	{
		return u<a.u;//最大值优先
	}
};
priority_queue<int>q1;//采用默认优先级构造队列,最大值优先
priority_queue<int,vector<int>,cmp1>q2;//最小值优先 
priority_queue<int,vector<int>,cmp2>q3;//最大值优先
priority_queue<int,vector<int>,greater<int> >q4;//最小值优先
//注意“>>”会被认为错误,因为这是右移运算符,所以这里用空格号隔开
priority_queue<int,vector<int>,less<int> >q5;//最大值优先
priority_queue<node1>q6;//最小值优先
priority_queue<node2>q7;//最大值优先
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

使君杭千秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值