比较函数
使用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类。