这就是我将内置函数或新类用作自定义比较器的方法
priority_queue< int, vector<int>, greater<int> > third (myints,myints+4);
// using mycomparison:
priority_queue< int, vector<int>, mycomparison > q1;
class mycomparison
{
public:
bool operator() (const int& lhs, const int&rhs) const
{
return (lhs<rhs);
}
};
typedef priority_queue<int,vector<int>,mycomparison> q2;
但我想知道我是否可以在那里使用lambda函数。
答案 0 :(得分:19)
首先定义lambda:
auto compareFunc = [](int a, int b) { return a > b; };
然后使用decltype:
typedef priority_queue<int, vector<int>, decltype(compareFunc)> q2;
现在当你使用q2
时,传入函数:
q2 myQueue(compareFunc);
基本上,priority_queue将函数的类型作为第3个模板参数,而构造函数则接受指向该函数的指针。