问题描述
我对优先级队列的推送弹出和max_heap的插入删除的时间复杂度感到困惑。当输入很长时(例如10 ^ 5),它们会花费相同的时间吗?我试图解决输入很长的问题。但是当我使用堆时,出现运行时错误。
解决方法
priority_queue
是根据堆实现的,它只是提供保证维持堆不变性的接口(与使用普通的vector
+ make_heap
不同,它最初是堆) ,但开发人员可以在之后直接滥用vector
来破坏不变式。
如果您对make_heap
所没有的priority_queue
结果感到不满,那可能是因为您操纵堆的代码不正确;它们都应同样出色地工作(priority_queue
只是为您简化了一些事情)。没有复制者,我不能说你做错了。