c++ - 缩小 std::priority_queue

标签 c++ stl priority-queue

给定一个 std::priority_queue,通过重复弹出最佳元素的通常过程,添加元素的速度快于删除元素的速度,因此程序将耗尽内存,除非完成某些操作,

有没有什么办法可以丢弃最差的一半元素,同时让最好的一半像往常一样一次处理一个?

最佳答案

没有直接的方法。但是二叉堆并不真正支持该操作。

但间接这样做并不难:

  • 创建一个临时的空优先级队列
  • 交换主队列和临时队列
  • 输入一个循环,从临时弹出并推送到主
  • 当您对复制的元素数量感到满意时停止
  • 销毁临时队列。

关于c++ - 缩小 std::priority_queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12143042/

相关文章:

c++ - 元编程,试图避免许多特化

c++ - 使用优先级队列分离链接(使用 std::map)

c++ - 微软的 CopyFileEx 错误

c++ - 确定作为模板参数给出的函数的返回类型

c++ - 如何将 vector 中的索引作为一对 (x,y) 坐标?

c++ - 如何计算给定 vector 索引的补码?

c++ - glm::ivec2 作为无序映射中的键

java - 优先级队列 - 背后更新 key 的影响

arrays - 使用数组中左右索引给出的约束最大化权重总和

c++ - std::move 一个 vector 到另一个 vector ,地址不更新