为什么std::priority_queue
首先返回最大元素(即,是最大优先级队列),即使它使用std::less
作为比较类型?为什么std :: priority_queue首先返回最大元素,但使用std :: less?
当我想创建一个最小队列时,这会特别困惑,这将由std::priority_queue<T, std::vector<T>, std::greater<T>>
完成。
优先级队列的作用与sort()
相反,使事情不太一致。如果使用greater
比较器sort()
a vector
,则该向量的front()
是您的最大值。如果使用greater
创建优先级队列,则front是最小值。我意识到优先级队列使用堆,但我觉得这有一个很好的理由。
如果相反,它可能会混淆别人。 – juanchopanza
因此,您的自定义类型只需提供更少的内容,并且可以将其用于其他容器,甚至可以实现更大的容量。 –