There's no difference in therms of performance. std::priority_queue
is just an adapter class that wraps the container and the very same heap-related function calls into a class. The specification of the std::priority_queue
openly states that.
By building a heap-based priority queue from an exposed std::vector
(by calling heap-related functions directly) you keep it open to the possibility of outside access, potentially damaging the integrity of the heap/queue. std::priority_queue
acts as a barrier restricting that access to a "canonical" minimum: push()
, pop()
, top()
etc. You can see it as self-discipline enforcing measure.
Also, by adapting your queue interface to the "canonical" set of operations, you make it uniform and interchangeable with other class-based implementations of priority queues that conform to the same external specification.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…