gpt4 book ai didi

c++ - 使用自定义比较器函数在类中定义优先级队列

转载 作者:行者123 更新时间:2023-11-28 00:00:09 27 4
gpt4 key购买 nike

我正在尝试使用自定义比较器定义优先级队列,如下所示:

typedef bool (*comp)(int,int);

bool compare(int exp1,int exp2){
return (exp1 > exp2);
}

class test{
public:
priority_queue<int,vector<int>,comp> test_pq(compare); // Gives compilation error
};

int main ()
{
priority_queue<int,vector<int>,comp> pq(compare); // Compiles perfectly
return 0;
}

这是出现的编译错误

test.cpp:18:47: error: ‘compare’ is not a type
priority_queue<int,vector<int>,comp> test_pq(compare);
^

我还尝试在测试类中声明另一个比较函数但没有效果。为什么主函数中的优先级队列可以编译,而类中的优先级队列不能编译?为比较器定义一个专用类是唯一可行的方法吗?谢谢。

最佳答案

您在 test 类中的代码试图声明一个方法 test_pq,但签名不正确。

要定义成员变量,您可以在初始化时使用大括号(需要 C++11):

class test{
public:
priority_queue<int,vector<int>,comp> test_pq{compare};
};

要在 C++11 之前实现相同的功能,您需要为 test 类编写自定义构造函数:

class test
{
public:
test()
: test_pq(compare)
{
// Constructor code here
}
private:
priority_queue<int,vector<int>,comp> test_pq;
};

关于c++ - 使用自定义比较器函数在类中定义优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39797031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com