大佬教程收集整理的这篇文章主要介绍了c – 常量大小优先级队列 – 先插入或先删除?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
if(point < pq.top()){ pq.pop(); pq.push(point); }
通常,首先弹出然后插入是否更有效,或者首先插入然后弹出更有效?
通常,首先推送比首先推送效率低.
理由一
在priority_queue中推送一个元素将调用vector :: push_BACk,如果超过当前容量,它可能会重新分配底层缓冲区.
原因二
假设优先级队列中现在有N个元素.
如果先按下,则会调用push_heap算法两次,分别调整N 1和N 1个元素.
如果先弹出,则调用push_heap算法两次,分别调整N和N个元素.
在旁边
如果您正在实现自己的优先级队列,这可能会节省性能.既然您已经使用top检查了值,我想知道您是否可以直接将元素与顶部交换而不调用push / pop,从而绕过堆调整算法.虽然可能不实用.
以上是大佬教程为你收集整理的c – 常量大小优先级队列 – 先插入或先删除?全部内容,希望文章能够帮你解决c – 常量大小优先级队列 – 先插入或先删除?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。