Я использую приоритетную очередь в качестве планировщика с одним дополнительным требованием. Мне нужно отменить запланированные элементы. Это равносильно удалению элемента из середины очереди приоритетов.
Я не могу использовать std :: priority_queue
, поскольку доступ к любому элементу, кроме верхнего, защищен.
I ' m пытается использовать функции кучи алгоритма
. Но мне все еще не хватает того, что мне нужно. Когда я удаляю элемент I из середины кучи, я хочу, чтобы он эффективно перестраивался. C ++ предоставляет следующие функции кучи:
std :: make_heap
O (3n) std :: push_heap
O (lg (n)) std :: pop_heap
O (2 lg (n)) Мне нужна новая функция вроде std :: repair_heap
с большим O < 3n . Я бы указал ему местоположение дыры, где раньше находился отмененный элемент, и он правильно отрегулировал бы кучу.
Кажется, большой упущение - не предоставлять std :: repair_heap
функция. Я упустил что-то очевидное?
Есть ли библиотека, которая предоставляет stl-совместимый std ::
Я не использую
std :: map
по нескольким причинам.