这就是我将内置函数或新类用作自定义比较器的方法
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;
Run Code Online (Sandbox Code Playgroud)
但我想知道我是否可以在那里使用lambda函数..
Tus*_*har 19
首先定义lambda:
auto compareFunc = [](int a, int b) { return a > b; };
Run Code Online (Sandbox Code Playgroud)
然后使用decltype:
typedef priority_queue<int, vector<int>, decltype(compareFunc)> q2;
Run Code Online (Sandbox Code Playgroud)
现在使用时q2,传递函数:
q2 myQueue(compareFunc);
Run Code Online (Sandbox Code Playgroud)
基本上,priority_queue将函数的类型作为第3个模板参数,而构造函数则获取指向该函数本身的指针.