猿问

优先级队列作为最小堆c ++与python中的heapq

我有以下 python 代码:


    import heapq

    heapq.heappush(openList, currentSearchNode)

    #NOTE List of nodes that have been checked

    closedList = []

    while openList:

        #NOTE Pop the lowest fscore (to-go + been from or gScore + hScore) and set it as current

        currentSearchNode = heapq.heappop(openList)

...

我需要将其转换为 C++14,我尝试了以下方法:


#include <functional>

#include <queue>

priority_queue <Node, vector<Node>, greater<Node>> min_heap;

vector<Node> openList, closeList;

Node currentNode = Node(start, euclidean(start, end), 0);

min_heap.emplace(openList, currentNode);

while (!openList.empty()) {

    currentNode = min_heap.pop(openList);

...

}

Visual Studio 中唯一以红色弹出的问题是这一行,currentNode = min_heap.pop(openList);正如您所看到的,它表示弹出的参数太多。如何以正确的方式做到这一点?


拉丁的传说
浏览 88回答 1
1回答

呼啦一阵风

像下面这样怎么样?while (!min_heap.empty()) {&nbsp; &nbsp; &nbsp;currentNode = min_heap.top(); // sets the top small (since std::greater used)element to currentNode;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;/* do something with currentNode */&nbsp; &nbsp; &nbsp;min_heap.pop(); // pops the element from container&nbsp;&nbsp;}
随时随地看视频慕课网APP

相关分类

Python
我要回答