简体   繁体   English

python中的最小堆c++与heapq的优先队列(如何将heapq.heappop(openList)转换为c++?)

[英]priority queue as min heap c++ vs heapq in python (how to convert heapq.heappop(openList) to c++?)

I have the following python code:我有以下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)
...

I need to convert it to C++14, I tried this:我需要将它转换为 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);
...
}

The only problem in Visual Studio that pops up in red, is this line currentNode = min_heap.pop(openList); Visual Studio 中唯一以红色弹出的问题是这一行currentNode = min_heap.pop(openList); as you can see, it says, too many argument for pop.正如你所看到的,它说流行音乐的论据太多了。 How to do it the right way?如何以正确的方式做到这一点?

How about like below;怎么样像下面;

while (!min_heap.empty()) {
     currentNode = min_heap.top(); // sets the top small (since std::greater used)element to currentNode;
     
     /* do something with currentNode */

     min_heap.pop(); // pops the element from container  
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM