尝试使用priority_queue。代码是:
struct HeapNode
{
int val;
int row;
int col;
HeapNode(int a, int b, int c) : val(a), row(b), col(c) {}
};
class MyComparator
{
public:
bool operator()(HeapNode &n1, HeapNode &n2)
{
return n1.val < n2.val;
}
};
void myfunction()
{
std::priority_queue<HeapNode, std::vector<HeapNode>, MyComparator> hp1; //LINE1
std::priority_queue<HeapNode, MyComparator> hp2; //LINE2
}
尝试了两种方式,如LINE1和LINE2所示。 这两行都不能通过编译。
答案 0 :(得分:0)
std :: priority_queue在构造函数中占用3个参数:
template<
class T,
class Container = std::vector<T>,
class Compare = std::less<typename Container::value_type>
> class priority_queue;
在你的情况下 LINE1 看起来很好,应该编译。什么是错误消息?
在 LINE2 中,您尝试使用容器“MyComparator”(不是容器!)创建自定义类型(HeapNode)的std :: priority_queue。
用于存储元素的基础容器的类型。该 容器必须满足SequenceContainer的要求。 此外,它必须提供通常的以下功能 语义:front(),push_back(),pop_back()。标准容器 std :: vector和std :: deque满足这些要求。
http://en.cppreference.com/w/cpp/container/priority_queue
“MyComparator”不是Container,也不支持所需的方法。
我检查了你的代码 LINE2 已注释掉它并编译。你有包括吗?你有什么主要功能吗?