STL优先队列priority_queue基本用法
来源:互联网 发布:云计算价值 编辑:程序博客网 时间:2024/06/05 05:50
我们在比赛的时候会经常用到堆这种数据结构,但是如果手打的话不仅耗费时间还容易出错,所以STL中的priority_queue模板在这时便可以发挥很大的用处,本人在这里写一下priority_queue的基本用法
基本成员函数
当然头文件是要用到队列的头文件#include< queue >的
q.top() 返回队列头部数据
q.push(x) 在队列尾部增加x数据
q.pop() 队列头部数据出队
q.empty() 判断队列是否为空
q.size() 返回队列中数据的个数
以及还有常用的两种构造方法(下面会详细解释)
1.priority_queue<变量类型>q;
2.priority_queue<变量类型,vector<变量类型>,比较函数>q;
上面的尖括号内第一个参数为入队元素类型(例如int),第二个为容器类型(例如vector< int >),第三个为比较函数(例如cmp)
第一种构造方法
首先priority_queue< int >对于元素中的优先级是按照大的优先级高来处理的,所以我们在打大根堆的时候不需要任何处理直接打就可以了(如果是要打小根堆的话下面会介绍第二种构造方法),具体的代码就只有一行 priority_queue< int >q;
如果要对某个结构体进行优先级的处理,我们便需要重载小于(<)这个运算符,这里展示的是结构体中有x和y两个元素,然后按照x大的优先来的,具体的代码如下
struct node{ bool operator < (const node &b) const{//在结构体中重载 return x<b.x;//!!!虽然注意这里写的是x<b.x,但是在优先队列中却是反过来的,以后讲的都是这样,可以理解成在队列中后面的越来越小 } int x; int y;};priority_queue< node >q;
第二种构造方法
前面并没有讲怎么使用int型变量的时候从小到达排序,这里使用第二种构造方法就可以了,因为第二种构造方法中有比较函数,所以我们要写一个比较函数,这个比较函数是要写在一个类中的,下面是从小到大的比较函数的写法
struct cmp{ bool operator () (const int &a,const int &b)const{ return a>b; }};priority_queue< int,vector<int>,cmp >q;
但是每一次都这样写会太麻烦,于是这时我们还可以使用自带的一个比较函数
priority_queue< int,vector<int>,greater<int> /*注意这里前面一定要打一个空格,要不然会被以为是 ">>" 运算符 */>q;
相应的从大到小也有一个比较函数(虽然本来就是默认的)
priority_queue< int,vector<int>,less<int> >q;
虽然前面已经讲过怎么对于结构体申明优先级,但是对于第二种构造方法,也可以对结构体进行比较函数的定义,同样也是按照x从大到小的代码如下、
struct node{//是需要先定义结构体的 int x; int y;};struct cmp{ bool operator () (const node &a,const node &b) const{ return a.x<b.x;//大致就是这个样子 }};priority_queue< node,vector<node>,cmp >q;
以上就是priority_queue的基本用法,如果是其他的优先级方式,可以按照上面给出的这种模型来打(其实除外还有很多种用法,只不过本蒟蒻不会)
希望我的一点总结可以给到大家帮助!!!
- STL优先队列priority_queue基本用法
- STL之priority_queue的用法,优先队列
- STL优先队列priority_queue用法详解
- STL priority_queue 优先队列
- STL priority_queue 优先队列
- STL priority_queue 优先队列
- STL priority_queue优先队列
- stl-优先队列priority_queue
- 优先队列priority_queue用法
- [转]: STL priority_queue 优先队列
- [转]: STL priority_queue 优先队列
- STL 容器 priority_queue(优先队列)
- [转]: STL priority_queue 优先队列
- STL---priority_queue 优先队列概述。
- STL - priority_queue(优先队列)
- STL 之 优先队列(priority_queue)
- STL之优先队列priority_queue
- 优先队列priority_queue基本操作
- 数据结构和算法分析c++:向量的实现
- 并查集详解 (转)
- 高级软件工程课程总结
- 数据库索引解析 数据库进阶系列之一:漫谈数据库索引
- EventBus简单使用传值
- STL优先队列priority_queue基本用法
- linux系统mysql 查看当前使用的配置文件my.cnf的方法
- linux常用命令整理
- python 多线程问题
- Ambari Atlas安装配置
- Springmvc 跨域请求
- zookeeper实现配置中心
- getInputStream/getReader() has already been called for this request
- 创建Library 并 引用