Очередь с приоритетом
— это
адаптер контейнера
, который обеспечивает постоянное время доступа к наибольшему (по умолчанию) элементу ценой логарифмического времени вставки и извлечения.
Пользовательская функция сравнения
Compare
может быть предоставлена для изменения порядка, например, использование
std::
greater
<
T
>
приведет к тому, что наименьший элемент окажется на вершине через
top()
.
Работа с
priority_queue
аналогична управлению
кучей
в некотором контейнере с произвольным доступом, с тем преимуществом, что нельзя случайно нарушить структуру кучи.
Все функции-члены
std::priority_queue
являются
constexpr
: возможно создавать и использовать объекты
std::priority_queue
при вычислении константного выражения.
Однако, объекты
std::priority_queue
обычно не могут быть
constexpr
, поскольку любая динамически выделенная память должна быть освобождена в том же вычислении константного выражения.
Тип хранимых элементов. Программа некорректна, если
T
не совпадает с типом
Container::value_type
.
Container
-
Тип базового контейнера, используемого для хранения элементов. Контейнер должен удовлетворять требованиям
SequenceContainer
, и его итераторы должны удовлетворять требованиям
LegacyRandomAccessIterator
. Дополнительно он должен предоставлять следующие функции с
обычной семантикой
:
Тип
Compare
, предоставляющий строгое слабое упорядочение.
Обратите внимание, что параметр
Compare
определён таким образом, что он возвращает
true
, если его первый аргумент находится
перед
вторым аргументом в слабом упорядочении. Но поскольку очередь с приоритетом выводит наибольшие элементы первыми, элементы, которые "находятся перед", фактически выводятся последними. То есть начало очереди содержит "последний" элемент согласно слабому упорядочению, заданному
Compare
.