【发布时间】:2013-12-29 14:22:03
【问题描述】:
我正在尝试使用自定义比较函数在 C++ 中声明优先级队列...
所以,我将队列声明如下:
std::priority_queue<int,std::vector<int>, compare> pq;
这里是比较函数:
bool compare(int a, int b)
{
return (a<b);
}
我很确定我以前这样做过,没有类,以类似的方式,但现在,这段代码无法编译,我收到了几个这样的错误:
type/value mismatch at argument 3 in template parameter list for 'template<class _Tp, class _Sequence, class _Compare> class std::priority_queue'
有没有办法在不使用类的情况下创建与此类似的比较函数?
谢谢
【问题讨论】:
-
试试
&compare。如果这不起作用,您也可以使用std::less<int>。模板参数可能是函子的类型,而不是函子/函数值。 -
谢谢,但不, &compare 不起作用....我问这个的原因是因为我想对结构进行排序,基于它们的价值之一,所以 std::less 不会真的不行……
标签: c++ priority-queue