【问题标题】:STL for Fibonacci Heap?斐波那契堆的 STL?
【发布时间】:2012-12-16 14:28:00
【问题描述】:

STL 中的斐波那契堆在哪里? 如果 STL 不实现斐波那契堆,那么最佳实践是什么 使用 STL 中现有的算法和容器来实现它?

【问题讨论】:

标签: c++ data-structures stl fibonacci-heap


【解决方案1】:

尽管没有明确说明它是斐波那契堆,但 STL 实现了一个priority_queue,它具有与斐波那契堆相同的复杂性、相同的 api 和行为(实际上可能是伪装的斐波那契堆)

https://en.cppreference.com/w/cpp/container/priority_queue

【讨论】:

  • std::priority_queue 是容器适配器,这意味着它需要另一个容器(如std::vector)并在后台使用该容器提供新操作。它要求其容器提供随机访问迭代器,这意味着它在后台使用binary heap(理论上它可以使用其他基于数组的堆实现)。二叉堆和斐波那契堆的复杂性不同。与提升斐波那契堆相比,STL 队列的 api 也有限。
【解决方案2】:

boostan implementation of it。希望有帮助。 STL 中似乎没有一个。这是一个例子:

 for(int n=0;n<40;++n){
    std::cout<<"F("<<n<<")="<<fibonacci(n)<<std::endl;
  }

【讨论】:

    【解决方案3】:

    不,标准库中没有保证的斐波那契堆

    有关在 C++ 中实现自定义分配方案的示例,请参阅small object allocator in the Loki library


    编辑:抱歉,我正在考虑使用fibonacci buddy system 来实现动态内存分配堆。

    【讨论】:

      猜你喜欢
      • 2012-12-29
      • 2010-11-24
      • 2016-11-18
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 2015-06-05
      相关资源
      最近更新 更多