【发布时间】:2014-06-25 17:48:07
【问题描述】:
我很好奇 Boost 是否提供优先队列实现,它还支持在 O(log n) 时间内找到一个元素?
我可以通过使用 Boost Fibonacci Heap 来实现此功能,并将句柄与其索引一起存储在 std::map 中,并在堆插入时更新此信息,但我希望有一个已经提供此功能的堆版本.
注意:我删除了以前版本的问题,因为它太模棱两可了。
【问题讨论】:
-
简单的
set/map有什么问题? -
A
multiset是一个优先级队列,支持在对数时间内查找内容。 -
我认为键顺序或“自然”顺序与此处的优先级不一致是隐含的。 @tmyklebu 有道理
-
@sehe 您可以使用
(multi)set<pair<priority, item> >或multimap<priority, item>,或者如果可以使用自定义比较器从(multi)set<item>项目轻松计算优先级。 -
@Csq AFAIK,地图在足够的时间内不支持优先队列操作。