如何在 C++ 中向 std::priority_queue 添加键/优先级?

How to add a key/ priority to std::priority_queue in c++?

我正在尝试使用 std::priority_queue 实现 Dijkstra 的寻路算法。我的队列是 Node* 类型,我需要它根据存储在 Node 中的 float gScore 从最小 gScore 到最大来确定优先级。我已经阅读了文档,但我仍然不明白这是如何实现的。有什么想法吗?

我不明白 container_type(vector)

的类型是什么意思
std::priority_queue<Node*> queue;

非常感谢任何帮助!

您可以创建一个 class 来重载 ()

class cmp
{ 
   public:
   bool operator()(const Node *a, const Node *b) const
   {
      return (a->gscore) > (b->gscore);
   }
 };

然后

 std::priority_queue<Node*,std::vector<Node*>,cmp);

您将需要一个比较函数。我认为以下面给出的方式实施会更好,而不是为其声明 class。

auto comp = [] (Node* a,Node* b) -> bool { return a->gscore < b->gscore; };
priority_queue< Node*, std::vector<Node*>, decltype(comp) > foo(comp);