上篇简要介绍了队列,而现实生活中,在一个队列中我们往往希望得到该队列中最好元素排名次序。比如,一个竞赛的成绩组成一个队列,那我们可能会首先关注的就是谁是冠军,换言之就是谁是这个队列中的最大元素,这个时候普通的队列就解决起来比较麻烦了,用优先队列可以很方便的解决问题。
关于优先队列:从它的名字可以看出来,它的本质是一种队列,但是前面的修饰语“优先”有决定了它是一种特殊的队列!
特性:它不同于队列中的先进先出的原则,从优先队列中每次取出的都是优先权最高的元素。(优先权是我们根据具体情况设定的,可以是最大、最小、最长等等)
声明的头文件:#include"queue";
成员函数:它的成员函数:empty、size、pop、push、top
它的成员函数(除了top)和queue的使用方法都一样这里不再赘述 详细参见queue的成员函数
这里只说top,top函数就是获取队列中优先权最高的那个元素,相当于queue里的front,只不过它有优先权,所以重新命名为了top。
首先看第一种最长用最简单的构造使用方法:
priority_queue<int>q;
priority_queue 说明是定义的是优先队列;int队列中存储的元素数据类型;q用户定义的队列名称;
这