繁体   English   中英

优先队列声明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读取“项不求值为带有2个参数的函数”,但我不确定如何解决它

struct pathComp
{
    bool operator()(const pathP &s1, const pathP &s2) const
    {
        return s1.hue < s2.hue;
    }
};

priority_queue不使用称为comp的方法。 相反,您应该定义一个仿函数 ,该仿函数是一个类,该类重写上面的operator()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM