【发布时间】:2012-07-20 09:29:50
【问题描述】:
我正在创建一个简单的游戏,我使用std::priority_queue 向小队 发出命令(每个小队都有一个priority_queue<command>)。
机器人每 20 秒分析一次情况并向priority_queue 发送命令。
如何使priority_queue 固定大小,例如将大小设置为10?期望的效果是,当达到最大值时,如果我向队列中添加 2 个新命令,则会自动删除 2 个优先级最低的现有命令。
【问题讨论】:
-
这是一个新的。幸运的是,我从来没有这样做过。我怀疑@DeadMG 有唯一明显的解决方案 - 您将不得不编写一些代码来执行此操作,锁定队列并对其进行迭代:(
-
Here 是访问
priority_queue的底层容器的肮脏黑客(示例使用stack,但原理相同)。不过可能有更好的解决方案。 -
priority_queue在底层容器中实现二进制排序堆。它不是为迭代而设计的——而是让顶部元素最大,并让push和pop在日志时间内执行。