c++ priority

03-07 8137阅读 0评论

1、priority_queue的作用

priority_queue即优先级队列,它的使用场景很多,它底层是用大小根堆实现的,可以用log(n)的时间动态地维护数据的有序性。适用于许多场景,比如简化哈夫曼树算法、dijkstra算法等等

c++ priority 第1张
(图片来源网络,侵删)

priority_queue是不允许随机访问,只能访问队列首部的元素,也只能对首部元素进行出队,下面进行学习它的基本用法

2、priority_queue的定义

头文件

#include

基本定义方法:

基本定义默认是使用大顶堆的,即队首总是最大的元素

priority_queue 容器名

如:

priority_queue q;//储存int型数据 
priority_queue q;//储存double型数据 
priority_queue q;//储存string型数据 
priority_queue q;//储存结构体或者类 

快速切换大小顶堆定义:

less 即使用大顶堆

c++ priority 第2张
(图片来源网络,侵删)

greater 即是用小顶堆

priority_queue 容器名

如:

使用大顶堆的队列:

priority_queue q;//储存int型数据 
priority_queue q;//储存double型数据 
priority_queue q;//储存string型数据 
priority_queue q;//储存结构体或者类 

使用小顶堆的队列:

priority_queue q;//储存int型数据
priority_queue q;//储存double型数据
priority_queue q;//储存string型数据
priority_queue q;//储存结构体或者类 

使用结构体重载运算符定义:

新建一个结构体,通过重载运算符改变顶堆的排序,这里是拓展用法,也是必学用法,因为自己写的结构体是没有比较大小功能的,当然也可以在原本的结构体里面重载运算符

priority_queue q;//储存int型数据 
priority_queue q;//储存double型数据 
priority_queue q;//储存string型数据
priority_queue q;//储存结构体或者类 

3、priority_queue的成员函数

empty() 如果优先队列为空,则返回真 
pop() 删除第一个元素 
push() 加入一个元素 
size() 返回优先队列中拥有的元素的个数 
top() 返回优先队列中有最高优先级的元素 

4、priority_queue的基本用法

普通数据类型的使用方法:

示例代码:

#include//c++标准头文件,可以使用cout,cin等标准库函数 
#include//使用priority_queue时需要的头文件 
using namespace std;//命名空间,防止重名给程序带来各种隐患,使用cin,cout,stack,map,set,vector,queue时都要使用
int main(){
	 priority_queue q1;//定义一个默认大顶堆的优先级队列q1,即队首元素总是最大值 
//	 priority_queue q1; //这样显示定义大顶堆也是可以的 
	 cout//定义一个结构体test 
	int val;
	test(int v){//构造函数 
		this-val=v;
	}
	bool operator  (const test t)const{//重载运算符 
		return valt.val;
	}
	bool operator 

免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,8137人围观)

还没有评论,来说两句吧...

目录[+]