我对优先级队列的推送弹出和max_heap的插入删除的时间复杂度感到困惑。当输入很长时,例如10 ^ 5会花费相同的时间吗?这将是优先级更高的队列或max_heap?解决了输入很长的问题。但是当我使用堆时,出现运行时错误。

最佳答案

priority_queue是根据堆实现的,它只是提供保证保持堆不变性的接口(interface)(与使用普通的vector + make_heap最初是一个堆不同,但是开发人员可以通过随后直接滥用vector来破坏不变式) 。
如果您对make_heap的结果感到不满,而对priority_queue的结果感到麻烦,那可能是因为您操纵堆的代码不正确;它们都应该同样出色地工作(priority_queue只是为您简化了一些事情)。没有复制者,我不能说你做错了什么。

关于c++ - 优先级队列的插入和弹出以及max_heap的插入和删除的时间复杂度是否相同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63543424/

10-09 00:19