admin管理员组

文章数量:1623786

优先队列的本质是堆,但它具有队列的所有操作特性,与普通队列不同的地方就是出队的时候按照优先级顺序出队,这个优先级即最大堆或最小堆的规则(即大的为top优先出队或小的为top优先出队),在队列的基础上加了个堆排序。

以O(log n) 的效率查找一个队列中的最大值或者最小值,其中是最大值还是最小值是根据创建的优先队列的性质来决定的。

priority_queue

对于这个模板类priority_queue,它是STL所提供的一个非常有效的容器。

作为队列的一个延伸,优先队列包含在头文件 <queue> 中

C ++中的优先队列是STL中的派生容器,它仅考虑最高优先级元素。队列遵循FIFO策略,而优先队列根据优先级弹出元素,即,优先级最高的元素首先弹出。

它在某些方面类似于普通队列,但在以下方面有所不同

  • 在优先队列中,队列中的每个元素都与某个优先级相关联,但是优先级在队列数据结构中不存在。

  • 优先队列中具有最高优先级的元素将被首先删除,而队列遵循FIFO(先进先出)策略,这意味着插入的元素将被首先删除。

  • 如果存在多个具有相同优先级的元素,则将考虑该元素在队列中的顺序。

注意:优先队列是普通队列的扩展版本,但优先级最高的元素将首先从优先队列中删除。

优先队列的语法

priority_queue<Type, Container, Functional>    

 其中Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。

 1.在STL中,默认情况下(不加后面两个参数)是以vector为容器,以 operator< 为比较方式,所以在只使用第一个参数时

本文标签: 队列priorityqueue