【发布时间】:2013-11-14 23:24:04
【问题描述】:
我在我的图形应用程序中使用 STL priority_queue 作为数据结构。您可以放心地将其假设为 Prim 生成树算法的高级版本。 在算法中,我想有效地在优先级队列中找到一个节点(不仅仅是一个最小节点)。[这是需要的,因为节点的成本可能会改变并且需要在 priority_queue 中修复] 我所要做的就是增加priority_queue并根据我的节点键索引它。我找不到任何可以在 STL 中完成的方法。谁能更好地了解如何在 STL 中做到这一点?
【问题讨论】:
-
您可以改用
std::map...虽然速度较慢且内存碎片/使用量更大。我不认为你可以用priority_queue做你想做的事。 -
@Dave Map 不是解决方案,我需要一直找到最小关键节点。地图不这样做。
-
也有:
myMap.begin()就是这样一个节点。 -
@Igor 不,不是。我需要:1)找到最小加权节点(通常通过优先级队列完成)2)在节点的数据结构中找到通常通过 Map 完成的位置。
-
如果权重是key,那么
myMap.begin()指向权重最小的节点。如果权重不是关键,那么优先队列究竟有什么帮助?