首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中是否有一个堆类支持更改head以外的元素的优先级?

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

Stack Overflow用户
提问于 2009-05-29 19:08:21
回答 4查看 3.6K关注 0票数 12

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-02 04:41:08

我很高兴地告诉大家,Boost现在已经添加了一个带有一些stellar data structuresBoost.Heap library

这样做的好处是Fibonacci堆支持在固定的分期时间内更改优先级。

不幸的是,所有的可变堆都是基于节点的(换句话说,正如@wilx所建议的,它们具有额外的间接性)。@Feruccio对Boost的“可变堆”的回答有这样的代码,如果你愿意在你的值类型中包含指向句柄的指针,你就可以编写基于向量的可变堆。

票数 3
EN

Stack Overflow用户

发布于 2009-05-29 19:30:45

看看Boost的mutable heaps吧。

票数 10
EN

Stack Overflow用户

发布于 2009-05-29 19:17:27

这听起来像是你需要更多间接的东西。改为将指向事件的指针存储在优先级队列中。当队列中某些元素的优先级发生变化时,将其移除并重新插入。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/927631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档