This is how I would use inbuilt function or new class as a custom comparator
priority_queue< int, vector, greater > third (myints
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.