错误C2825:'_ CONTiner':当后跟'::'时必须是类或命名空间

时间:2016-02-15 22:18:46

标签: c++ stl priority-queue

我在我的代码中添加了priority_queue。当我这样做时,我收到了这个错误:

错误C2825:'_ CONTiner':当后跟'::'时必须是类或命名空间

它指向队列文件的第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
{
....

这是“最不实用的错误消息”奖项类别。除了放弃并提出我自己的priority_queue之外,我不知道该怎么办。

1 个答案:

答案 0 :(得分:1)

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

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

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