admin管理员组文章数量:1623788
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;//最大值优先
本文标签: 队列序列容器stlpriorityqueue
版权声明:本文标题:STL中的序列式容器——priority_queue(优先队列) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728897130a1178555.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论