给定一个 std::priority_queue,通过重复弹出最佳元素的通常过程,添加元素的速度快于删除元素的速度,因此程序将耗尽内存,除非完成某些操作,
有没有什么办法可以丢弃最差的一半元素,同时让最好的一半像往常一样一次处理一个?
最佳答案
没有直接的方法。但是二叉堆并不真正支持该操作。
但间接这样做并不难:
- 创建一个临时的空优先级队列
- 交换主队列和临时队列
- 输入一个循环,从临时弹出并推送到主
- 当您对复制的元素数量感到满意时停止
- 销毁临时队列。
关于c++ - 缩小 std::priority_queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12143042/