优先队列(priority_queue)的原理和实现简述
2018-02-09 14:55
417 查看
本文主要简单介绍优先队列的原理和实现,便于快速学习和查阅。
原理
优先队列和队列一样,只能从队尾插入元素,从队首删除元素。
优先队列中最大元素始终位于队首,所以,出队时并非按照先进先出的原则,而是将当前队列中最大的元素出队。
可以重载”<”操作,重新定义比较规则。
实现
头文件
优先队列头文件与队列头文件一样,使用优先队列时别忘了加上
定义
Data_Type 为优先队列要存储的数据的类型,name 为该队列的名字。
例如:
插入元素
运用
例如:
读取元素数量
用
判断队列是否为空
运用
读取队首元素
运用成员函数
注意:只能返回元素的值,而不能删除队首元素。
删除元素
运用成员函数
注意:只能删除队首元素,而不能返回队首元素的值。
以上操作其实和队列操作类似,至于”<”的重载,本文暂时不做讲解。
原理
优先队列和队列一样,只能从队尾插入元素,从队首删除元素。
优先队列中最大元素始终位于队首,所以,出队时并非按照先进先出的原则,而是将当前队列中最大的元素出队。
可以重载”<”操作,重新定义比较规则。
实现
头文件
优先队列头文件与队列头文件一样,使用优先队列时别忘了加上
queue的头文件。
#include<queue>
定义
priority_queue<Data_Type> name;
Data_Type 为优先队列要存储的数据的类型,name 为该队列的名字。
例如:
priority_queue<int> pq; // 命名为pq的有限队列存储整型数据
插入元素
运用
push()成员函数将元素入队。
例如:
pq.push(1); pq.push(2);
读取元素数量
用
size()成员函数返回当前优先队列中元素的数量。
pq.size();
判断队列是否为空
运用
empty()成员函数判断队列是否为空。若为空,返回逻辑真,否则返回逻辑假。
pq.empty();
读取队首元素
运用成员函数
top()返回队首元素。
pq.top();
注意:只能返回元素的值,而不能删除队首元素。
删除元素
运用成员函数
pop()将队首元素出队。
pq.pop();
注意:只能删除队首元素,而不能返回队首元素的值。
以上操作其实和队列操作类似,至于”<”的重载,本文暂时不做讲解。
相关文章推荐
- 算法导论(min-priority-queue 最小优先队列的部分实现)
- PriorityBlockingQueue优先队列的二叉堆实现
- 优先队列(priority_queue)的C语言实现代码
- 索引优先队列-IndexedPrirotyQueue的原理及实现(源码)
- min heap priority queue 最小堆实现的优先队列
- 优先队列实现原理分析
- HDU ACM 1242 Rescue(广搜BFS + 优先队列priority_queue)
- C++STL之priority_queue优先队列容器
- 关于 优先队列 得有关库函数( priority_queue)
- Priority_queue优先队列容器
- priority_queue优先队列
- STL(二十)priority_queue优先队列容器
- priority_queue<int,vector<int>,greater<int>>优先队列 按照由小到大顺序
- C++ 优先队列 priority_queue 的基本使用方法【定义优先级】
- STL中的优先级队列(priority_queue)的自己实现priqueue
- 优先队列priority_queue 用法详解
- priority_queue优先队列容器
- 并发队列-无界阻塞优先级队列PriorityBlockingQueue原理探究
- 谁都能看懂的C++ STL之优先队列(priority_queue)
- 模板:优先队列(priority_queue)