Как переместить элементы из очереди приоритетов STL

В очереди приоритетов STL в C ++ есть метод void pop () и метод const ref top (). Таким образом, если вы хотите переместить элементы из очереди, вы должны сделать что-то вроде этого:

T moved = std::move(const_cast<T&>(myQueue.top())));
myQeue.pop();

Это фактически приводит к тому, что вершина не является константой, поэтому ее можно перемещать (а не копировать). Мне не нравится этот код, потому что принудительное перемещение может сделать недействительными инварианты очереди с приоритетами, чтодолжен не имеет значения из-за популярности, но вещимог пойти не так

Есть ли лучший способ сделать поп / переезд? Почему нет функции T && top_and_pop ()?

Ответы на вопрос(2)

Ваш ответ на вопрос