c++ - 如何通过句柄从 boost::fibonacci_heap 获取元素?

标签 c++ boost fibonacci-heap

我正在使用来自 Boost 1.53.0 的 boost::fibonacci_heap 类来维护可更新的优先级队列。

当我想要更新一个元素时,我需要将堆中的元素与我想要替换它的新元素进行比较。我只想用“较小”版本替换堆中的元素,因此我想在更新之前比较它们。

当我插入元素时,我会存储它们的句柄 (boost::fibonacci_heap::handle_type)。我在 documentation for fibonacci_heap 中看到的所有功能采用句柄类型的方法仅提供某种写访问权限(update()decrease()increase() 等)并且不' 允许我在更新之前检查句柄标识的元素。

是否有某种方法可以仅使用其句柄来查看 fibonacci_heap 中的元素?

最佳答案

您应该能够解除对句柄的引用。这里提供了一个例子: http://www.boost.org/doc/libs/1_50_0/doc/html/heap/concepts.html

网站示例

fibonacci_heap<heap_data> heap;
heap_data f;
fibonacci_heap<heap_data>::handle_type handle = heap.push(f);
(*handle).handle = handle; // store handle in node

所以简单调用

(*handle)

获取对存储在堆中的类的引用。

关于c++ - 如何通过句柄从 boost::fibonacci_heap 获取元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17823495/

相关文章:

c++ - 来自 Boost 的 JSON 解析器的警告 C4512 的解决方法

c++ - Boost Graph - 同时使用有向边和无向边

c++ - 如何遍历包含 deque<MyData> 元素的斐波那契堆( boost )

algorithm - 需要帮助了解如何减少斐波那契堆中的键

c++ - 如何在 QQuickItem 上绘制 QQuickItem

c++ - 如何在结构数组中设置统一值?

c++ - 在 C++ 中对带参数(字符串)的函数使用 std bind

c++ - C++ 是如何解析这个返回类型的?

c++ - 实现加权图

java - 是否有斐波那契堆的标准 Java 实现?