优先队列声明 C++
Priority Queue Declaration C++
有一段时间我对此感到相当沮丧,我似乎无法找到错误所在(注意我的编译器不支持 c++11)
基本上我正在尝试构建一个优先级队列,其中每个元素包含另外两个元素。第一个元素是 char 向量队列,第二个元素是评估此队列的启发式方法。
char 向量队列的内容并不重要,只是启发式(更大)的评估如下
struct pathP
{
public:
queue<vector<char>> que;
int hue;
};
struct pathComp
{
bool comp(const pathP &s1, const pathP &s2) const
{
return s1.hue < s2.hue;
}
};
------------------------(在我代码其他地方的函数中)
priority_queue<pathP, vector<pathP>, pathComp> endV;
queue<vector<char>> saveQ;
pathP pathStore;
int h1, heur;
------------------------(进一步向下函数)
pathStore.que = saveQ;
heur = h1;
pathStore.hue = heur;
endV.push(pathStore); //error C2064
错误 c2064 读取 "term does not evaluate to a function taking 2 arguments"
我不确定如何修复它
struct pathComp
{
bool operator()(const pathP &s1, const pathP &s2) const
{
return s1.hue < s2.hue;
}
};
priority_queue
没有使用名为 comp
的方法。相反,您应该定义一个 functor,它是一个 class,它会覆盖上面的 operator()
。
有一段时间我对此感到相当沮丧,我似乎无法找到错误所在(注意我的编译器不支持 c++11)
基本上我正在尝试构建一个优先级队列,其中每个元素包含另外两个元素。第一个元素是 char 向量队列,第二个元素是评估此队列的启发式方法。
char 向量队列的内容并不重要,只是启发式(更大)的评估如下
struct pathP
{
public:
queue<vector<char>> que;
int hue;
};
struct pathComp
{
bool comp(const pathP &s1, const pathP &s2) const
{
return s1.hue < s2.hue;
}
};
------------------------(在我代码其他地方的函数中)
priority_queue<pathP, vector<pathP>, pathComp> endV;
queue<vector<char>> saveQ;
pathP pathStore;
int h1, heur;
------------------------(进一步向下函数)
pathStore.que = saveQ;
heur = h1;
pathStore.hue = heur;
endV.push(pathStore); //error C2064
错误 c2064 读取 "term does not evaluate to a function taking 2 arguments" 我不确定如何修复它
struct pathComp
{
bool operator()(const pathP &s1, const pathP &s2) const
{
return s1.hue < s2.hue;
}
};
priority_queue
没有使用名为 comp
的方法。相反,您应该定义一个 functor,它是一个 class,它会覆盖上面的 operator()
。