对于 boost::fibonacci_heap,pop() API 会自动更新堆吗?还是必须跟在update()之后? [已关闭]

问题描述 投票:0回答:1

我刚开始使用

boost::fibonacci_heap
,并且对使用有一些疑问。
我的伪代码是这样的:

while (!heap.empty()) {

    Get heap.top() //analyze
    heap.pop()
    
    //modify some other heap elements using heap handle
    heap.update(handle_of_modified_entry)

}

我的问题是

heap.update()
调用是否更新由
pop
调用释放的顶部元素。我是否导致对已释放内存的无效访问?我是否需要在 pop 之后调用 update 以确保 pop 元素已从堆中删除?

c++ boost heap
1个回答
0
投票
  • pop:效果:从优先级队列中删除顶部元素。
  • 更新:效果:将 v 分配给句柄处理的元素并更新优先级队列。

pop
正在从优先级队列中删除顶部元素,因此当您要更新它时它不再位于队列内。因此,除非您有相反的证据,否则它不应导致您担心的行为。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.