将堆句柄提升到顶部元素

时间:2018-09-18 12:54:52

标签: c++ boost priority-queue

我有一个算法,该算法本质上采用类型为T的元素,将其推入priority_queue,然后采用队列的顶部元素,对其进行修改,更新堆,采用(可能new)top元素,依此类推。

我想尝试使用Boost heap库替换std :: priority_queue,以避免必须先由pop后跟相同元素的push来进行更新。但是,我似乎找不到一种方法来访问队列顶部的句柄以对其进行更新。

具体来说,似乎只有两种方法可以获取元素的句柄:

  1. s_handle_from_iterator(it)。但是,begin()返回的迭代器不一定是堆栈的顶部,并且此方法不占用ordered_iterator,所以看来我不走运吗?
  2. push(elem)返回句柄。但是,使用它似乎意味着我必须将句柄存储在某个位置,可能存储在元素本身中,这似乎浪费了空间(并且在处理元素时浪费了时间)。

有更好的方法吗?

请注意,对于稍微不同的用例(按顺序迭代整个堆),this answer似乎表明确实没有更好的方法...

0 个答案:

没有答案