为什么队列在stl中排在最前面,但优先级队列却排在最前面?

时间:2018-07-25 14:12:19

标签: c++ stl queue priority-queue

两者都是容器适配器,两者都在标头<queue>中定义,但它们都有不同的接口来访问'first'元素。我可以理解由于数据结构的限制而缺少back,但是命名front却使我感到困惑。

2 个答案:

答案 0 :(得分:1)

priority_queue容器适配器是标准库的堆算法的便捷包装,它使用序列容器作为经典的二进制堆。名称top可能反映了这种关联;我们将其称为堆的“顶部”,因为我们将其可视化为堆有序的二叉树,其根(顶部)的优先级最高。

答案 1 :(得分:1)

是的。

这是两个不同的适配器。它们“适应”底层容器以具有特定的接口。这两类“定义”了算法可以使用的接口。

为什么使用该术语?

  • 一个队列有一个frontback
  • 不需要排队就可以得到优先级最低的元素;它只是具有最优先的元素。因此,我想您可能只有一个front,但可能要将其与选择top的队列区分开来。它可能与实现有关(因为它几乎绝对是掩盖下的一个堆,上面只有一个top)。