【发布时间】:2016-09-30 17:33:54
【问题描述】:
我正在尝试使用自定义比较器定义一个优先级队列,如下所示:
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);
^
我还尝试在测试类中声明另一个比较函数,但没有效果。为什么主函数中的优先级队列可以编译而类中的优先级队列没有?为比较器定义一个专用类是这里唯一的工作吗? 谢谢。
【问题讨论】:
标签: c++ stl priority-queue