Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误C2825:'_容器';:后跟';时必须是类或命名空间:';_C++_Stl_Priority Queue - Fatal编程技术网

C++ 错误C2825:'_容器';:后跟';时必须是类或命名空间:';

C++ 错误C2825:'_容器';:后跟';时必须是类或命名空间:';,c++,stl,priority-queue,C++,Stl,Priority Queue,我在代码中添加了优先级队列。当我这样做时,我会得到以下错误: 错误C2825:“\u容器”:后跟“:”时必须是类或命名空间 它指向队列文件的第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 {

我在代码中添加了优先级队列。当我这样做时,我会得到以下错误:

错误C2825:“\u容器”:后跟“:”时必须是类或命名空间

它指向队列文件的第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”
typedef std::pair PathDistPair;
结构对比较程序
{
布尔运算符()(路径对i、路径对j)
{
返回i.first>j.first;
}
};
肉堆;
typedef std::priority_queue MinHeap;
在node.h中:

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


class Node
{
....
类节点;
typedef std::向量节点;
类节点
{
....
这就在“最没有帮助的错误消息”奖励类别中。我不知道该怎么办,除了放弃并提出我自己的优先级队列。

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

您需要将
PathDistPair*
模板参数替换为包含
PathDistPair*
的容器类型,以告诉
priority\u queue
您要使用的底层结构

 // E.g. Using a vector.
 typedef std::priority_queue<float, std::vector<PathDistPair*>, PairComparator> MinHeap;
//例如,使用向量。
typedef std::priority_queue MinHeap;

请发布一个。谢谢!我没有意识到需要指定优先级队列使用哪种数据结构。