C++ 比较优先级队列的类

C++ 比较优先级队列的类,c++,stl,priority-queue,C++,Stl,Priority Queue,当我们需要最小优先级队列时,我们将Compare类声明为std:greater。这类似于returnobj1>obj2 有人能详细说明一下优先级队列是如何使用它的吗?在插入中应用它?或者在pop()之后将其用于“heapify” 我们知道在插入过程中,新元素会尽可能地向上浮动。所以,如果插入使用更大的值,那么obj1将是父对象吗?而obj2将是新元素本身吗?我查阅了STL源代码,了解了比较函数是如何使用的。下面是链接 关键词:推堆、筛选 if (Compare(parent, children

当我们需要最小优先级队列时,我们将
Compare
类声明为
std:greater
。这类似于
returnobj1>obj2

有人能详细说明一下优先级队列是如何使用它的吗?在插入中应用它?或者在
pop()
之后将其用于“heapify”


我们知道在插入过程中,新元素会尽可能地向上浮动。所以,如果插入使用更大的值,那么
obj1
将是父对象吗?而
obj2
将是新元素本身吗?

我查阅了STL源代码,了解了比较函数是如何使用的。下面是链接

关键词:推堆、筛选

if (Compare(parent, children))
    do the swap

对于你所有的问题,答案都是肯定的。我不知道标准是否规定了排序机制(我怀疑不是,尽管它可能暗示了这一点),但它确实规定了一些复杂性,和都保证在最坏的情况下是对数比较数,加上底层容器上匹配操作的复杂性。