【问题标题】:How do I get elements from boost::fibonacci_heap by handle?如何通过句柄从 boost::fibonacci_heap 获取元素?
【发布时间】:2013-07-24 00:58:10
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ boost fibonacci-heap


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 2016-07-02
      • 1970-01-01
      相关资源
      最近更新 更多