优先级队列声明C ++

问题描述 投票:0回答:1

我已经相当沮丧了一段时间,我似乎无法找到错误的位置(注意我的编译器不支持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读取“术语不评估为采用2个参数的函数”,我不知道如何解决它

c++ visual-studio-2013 priority-queue
1个回答
2
投票
struct pathComp
{
    bool operator()(const pathP &s1, const pathP &s2) const
    {
        return s1.hue < s2.hue;
    }
};

priority_queue不使用名为comp的方法。相反,你应该定义一个仿函数,它是一个覆盖operator()的类,如上所述。

© www.soinside.com 2019 - 2024. All rights reserved.