Здесь важно не думать о заказанных контейнерах, таких как std::priority_queue
, как отсортированных, потому что они на самом деле не так. Вместо этого они, как следует из названия, заказаны . И упорядочение осуществляется только путем помещения новых элементов в их упорядоченное место, когда они фактически вставлены в контейнер. Переупорядочение контейнеров не производится.
Поэтому на самом деле невозможно изменить порядок во время выполнения, поскольку все существующие элементы в очереди все равно будут упорядочены так, как они были при вставке, а новые элементы могут не быть размещены в правильном месте, потому что порядок больше не является правильным.
Единственный способ изменить порядок std::priority_queue
- это создать новую очередь с новой функцией упорядочения, а затем скопировать элементы из старого в новая очередь.