How can I use lambda for container comparison operator ?
c++, c++11
Solution
First define the lambda:
auto compareFunc = [](int a, int b) { return a > b; };
Then use decltype:
typedef priority_queue<int, vector<int>, decltype(compareFunc)> q2;
Now when you use `q2`, pass in the function:
q2 myQueue(compareFunc);
Basically, priority_queue takes the type of a function as it's 3rd template argument, while the constructor takes a pointer to that function itself.
Problem
This is how I would use inbuilt function or new class as a custom comparator ``` 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; ``` But I wonder if I can use lambda functions there ..