我有一个要用来创建堆的向量。我不确定是否应该使用 C++ make_heap 函数或将向量放入优先级队列?在性能方面哪个更好?我什么时候应该使用一个与另一个?
原文由 rolloff 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个要用来创建堆的向量。我不确定是否应该使用 C++ make_heap 函数或将向量放入优先级队列?在性能方面哪个更好?我什么时候应该使用一个与另一个?
原文由 rolloff 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答471 阅读✓ 已解决
在性能方面没有区别。
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作为自律的执行措施。此外,通过使您的队列接口适应“规范”操作集,您可以使其与符合相同外部规范的其他基于类的优先级队列实现统一和可互换。