我正在尝试声明一个 priority_queue of nodes
,使用 bool Compare(Node a, Node b)
作为比较器函数(它在节点类之外)。
我目前拥有的是:
priority_queue<Node, vector<Node>, Compare> openSet;
出于某种原因,我得到了 Error: "Compare" is not a type name
将声明更改为 priority_queue <Node, vector<Node>, bool Compare>
给我 Error: expected a '>'
我也试过:
priority_queue<Node, vector<Node>, Compare()> openSet;
priority_queue<Node, vector<Node>, bool Compare()> openSet;
priority_queue<Node, vector<Node>, Compare<Node, Node>> openSet;
我应该如何正确声明我的 priority_queue
?
原文由 Steven Morad 发布,翻译遵循 CC BY-SA 4.0 许可协议
注意 - 您可能还想查看其他答案,尤其是带有 decltype 和 lambda 的答案
您应该像这样声明一个类
Compare
并重载operator()
:或者,如果您由于某些原因无法上课,您可以使用
std::function
: