我应该什么时候使用 make_heap 与优先队列?

新手上路,请多包涵

我有一个要用来创建堆的向量。我不确定是否应该使用 C++ make_heap 函数或将向量放入优先级队列?在性能方面哪个更好?我什么时候应该使用一个与另一个?

原文由 rolloff 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 308
1 个回答

在性能方面没有区别。 std::priority_queue 只是一个适配器类,它将容器和与堆相关的相同函数调用到一个类中。 std::priority_queue 的规范公开声明了这一点。

通过从暴露的 --- 构建一个 heap std::vector 并直接调用与堆相关的函数,您可以保持它对外部访问的可能性保持开放,这可能会破坏堆/队列的完整性。 std::priority_queue acts as a barrier restricting that access to a “canonical” minimum: push() , pop() , top() etc. You can see it作为自律的执行措施。

此外,通过使您的队列接口适应“规范”操作集,您可以使其与符合相同外部规范的其他基于类的优先级队列实现统一和可互换。

原文由 AnT stands with Russia 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题