3

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

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

当我插入元素时,我会存储它们的句柄 ( boost::fibonacci_heap::handle_type)。我在文档中fibonacci_heap看到的所有函数都采用句柄类型,只提供某种写访问(update(),等) decrease()increase()并且不允许我在更新之前检查句柄标识的元素。

fibonacci_heap有没有办法只使用它的句柄来查看 a 中的元素?

4

1 回答 1

4

您应该能够取消引用句柄。此处提供了一个示例: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)

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

于 2013-07-24T04:06:43.387 回答