объявление priority_queue в C++ с пользовательским компаратором

Я пытаюсь объявить a 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?

59
задан 19 April 2013 в 22:33

1 ответ

Можно также использовать функцию лямбды.

auto Compare = [](Node &a, Node &b) { //compare };
std::priority_queue<Node, std::vector<Node>, decltype(Compare)> openset(Compare);
2
ответ дан 1 November 2019 в 12:09

Другие вопросы по тегам:

Похожие вопросы: