我在我的代码中添加了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之外,我不知道该怎么办。
答案 0 :(得分:1)
您的priority queue typedef没有指定队列将存储其项目的容器。
您需要将PathDistPair*
模板参数替换为包含PathDistPair*
的容器类型,以告知priority_queue
您要使用的基础结构。
// E.g. Using a vector.
typedef std::priority_queue<float, std::vector<PathDistPair*>, PairComparator> MinHeap;