您的位置:首页 > 产品设计 > UI/UE

优先队列(priority_queue)的原理和实现简述

2018-02-09 14:55 417 查看
本文主要简单介绍优先队列的原理和实现,便于快速学习和查阅。

原理

优先队列和队列一样,只能从队尾插入元素,从队首删除元素。

优先队列中最大元素始终位于队首,所以,出队时并非按照先进先出的原则,而是将当前队列中最大的元素出队。

可以重载”<”操作,重新定义比较规则。

实现

头文件

优先队列头文件与队列头文件一样,使用优先队列时别忘了加上
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();


注意:只能删除队首元素,而不能返回队首元素的值。

以上操作其实和队列操作类似,至于”<”的重载,本文暂时不做讲解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ STL