c++ priority
1、priority_queue的作用
priority_queue即优先级队列,它的使用场景很多,它底层是用大小根堆实现的,可以用log(n)的时间动态地维护数据的有序性。适用于许多场景,比如简化哈夫曼树算法、dijkstra算法等等
(图片来源网络,侵删)
priority_queue是不允许随机访问,只能访问队列首部的元素,也只能对首部元素进行出队,下面进行学习它的基本用法
2、priority_queue的定义
头文件
#include
基本定义方法:
基本定义默认是使用大顶堆的,即队首总是最大的元素
priority_queue 容器名
如:
priority_queue q;//储存int型数据 priority_queue q;//储存double型数据 priority_queue q;//储存string型数据 priority_queue q;//储存结构体或者类
快速切换大小顶堆定义:
less 即使用大顶堆
(图片来源网络,侵删)
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
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...