参考
使用STL中sort和priority_queue自定义比较函数
static bool cmp(int&a, int& b) { return a<b; } sort(vec.begin(),vec.end(),cmp); // 使用lambda函数 sort(vec.begin(),vec.end(),[](int a,int b){return a<b;}); // 使用less<>() sort(vec.begin(),vec.end(),less<int>());
priority_queue 写法为
priority_queue<int,vector<int>,decltype(&cmp)> q(cmp)
或者使用仿函数
class Cmp{ public: bool operator()(int a,int b){ return a<b; } } priority_queue<int,vector<int>,Cmp> q;
仿函数是一个对象,可以看作一个函数或者函数指针
仿函数是重载了()运算符的对象,又是能行使函数功能的类
sort是一个模板函数,第三个参数是Compare类的对象
我们需要在sort的参数列表"()"中给出自定义的Compare类的对象实例,而对于模板类priority_queue,我们需要在其类型参数表 "<>"中给出自定义的Compare类。