错误 C2825:“_Container”:后跟“::”时必须是 class 或命名空间

error C2825: '_Container': must be a class or namespace when followed by '::'

我在我的代码中添加了 priority_queue。当我这样做时,出现此错误:

error C2825: '_Container': 必须是 class 或后跟 '::'

的命名空间

它导致队列文件的第 218 行:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\queue

#include "node.h"
typedef std::pair<Nodes*, unsigned int> PathDistPair;

struct PairComparator
{
    bool operator()(PathDistPair i, PathDistPair j)
    {
        return i.first > j.first;
    }
};



MinHeap;
typedef std::priority_queue<float, PathDistPair*, PairComparator> MinHeap;

在node.h中:

class Node;
typedef std::vector<Node*> Nodes;


class Node
{
....

这在 "least helpful error messages" 奖项类别中名列前茅。我不知道该怎么办,除了放弃并想出我自己的 priority_queue.

您的 priority queue typedef 没有指定队列将在其中存储其项目的容器。

您需要将 PathDistPair* 模板参数替换为包含 PathDistPair* 的容器类型,以告知 priority_queue 您要使用的底层结构。

 // E.g. Using a vector.
 typedef std::priority_queue<float, std::vector<PathDistPair*>, PairComparator> MinHeap;