C++ 错误C2825:'_容器';:后跟';时必须是类或命名空间:';
我在代码中添加了优先级队列。当我这样做时,我会得到以下错误: 错误C2825:“\u容器”:后跟“:”时必须是类或命名空间 它指向队列文件的第218行:C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\include\queueC++ 错误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 {
#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;
请发布一个。谢谢!我没有意识到需要指定优先级队列使用哪种数据结构。