仿函数作用
1、概念
仿函数概念
仿函数是定义了一个含有 operator() 成员函数的对象,可视为一个一般函数,不过这个函数功能是在类运算符operator() 中实现的。它是一个函数对象,它将函数作为参数传递的方式来使用
2、作用
1、作为排序规则(排序不能直接使用运算符 < 或 > )
2、作为判别式(返回值为 bool 类型)
3、同时拥有多种内部状态(返回一个值同时累加)
4、作为 for_each 返回值
2.1 作为排序规则
# 方法一
class Student {
public:
string getName() {
return m_name;
}
public:
string m_name;
};
class StudentSortRule {
public:
bool operator()(Student S1, Student S2) {
return (S1.getName() < S2.getName());
};
};
int main() {
typedef set<Student, StudentSortRule> StudentSet;
StudentSet stuSet; // 根据学生名字进行排序
Student stuJack;
stuJack.m_name = "Jack";
Student stuToby;
stuToby.m_name = "Toby";
stuSet.insert(stuJack);
stuSet.insert(stuToby);
return 0;
}
# 方法二
bool static cmp(const pair<int, int> &a, const pair<int, int> &a)
{
return a.second > b.second;
}