admin管理员组文章数量:1623789
C++数据结构---priority_queue(优先队列,堆)
- 1. 什么是priority_queue(优先队列,堆)
- 2. 如何使用
1. 什么是priority_queue(优先队列,堆)
普通的队列的性质是先进先出,元素在队列尾加入,在队头弹出。但是在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级的元素先出的行为特征。
优先队列的其他用法在此不作解释,此处只解释其作为堆的用法。
优先队列含有三个参数:Type, Container, Functional
priority_queue <Type, Container, Functional>
其中Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。
Container 必须是用数组实现的容器,比如 vector, deque 但不能用 list。STL里面默认用的是 vector。
比较方式默认用 operator , 优先队列默认为大根堆;
如果要用到小顶堆,则一般要把模板的三个参数都带进去。
STL里面定义了 greater<类型>,如果要声明小根堆,则需要带上该参数。
此外,如果要自定义类型,就需要自己重载 operator
2. 如何使用
- 导入头文件
#include < queue >
- 创建大根堆
// priority_queue <类型> 变量名;如:
priority_queue <int> heap;
3. 创建小根堆
// priority_queue <类型,vecotr <类型>,greater <类型>> 变量名,如:
priority_queue <int,vecotr <int>,greater <int>> heap
- 返回堆的长度
heap.size();
- 判断堆是否为空
heap.empty();
- 往堆里插入一个元素
heap.push();
- 返回堆顶元素
heap.top();
- 弹出堆顶元素
heap.pop();
本文标签: 数据结构队列priorityqueue
版权声明:本文标题:C++数据结构---priority_queue(优先队列,堆) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728896430a1178470.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论