C++中是否有一个支持更改除head之外的元素优先级的堆类?

Nei*_*l G 12 c++ heap boost stl priority-queue

我有一个事件的优先级队列,但有时事件优先级会改变,所以我想将事件请求者的迭代器维护到堆中.如果优先级发生变化,我希望在log(n)时间内调整堆.我将始终只有一个指向堆中每个元素的迭代器.

Fer*_*cio 10

看看Boost的可变堆.


Nei*_*l G 3

我很高兴地报告,Boost 现在添加了一个带有一些出色数据结构的Boost.Heap 库

\n\n

这样做的优点是斐波那契堆支持在恒定的摊销时间内改变优先级。

\n\n

不幸的是,所有可变堆都是基于节点的(换句话说,它们具有@wilx 建议的额外间接性)。@Feruccio\'s Boost\xe2\x80\x9cmutable heaps\xe2\x80\x9d 的答案有代码,如果您愿意拥有指向包含在您的代码中的句柄的指针,则允许您编写基于向量的可变堆。值类型。

\n