函数对象functor的用法
- 尽管函数指针被广泛用于实现函数回调,但C++还提供了一个重要的实现回调函数的方法,那就是函数对象。
- functor,翻译成函数对象,伪函数,算符,是重载了“()”操作符的普通类对象。从语法上讲,它与普通函数行为类似。
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include "set"
// 自定义数据类型 排序
// 仿函数 函数对象 重载() 操作 进行比较大小
//题目:学生包含学号,姓名属性,现要求任意插入几个学生对象到set容器中,
//使得容器中的学生按学号的升序排序
class Student
{
public:
Student(char *name, int age)
{
strcpy(this->name, name);
this->age = age;
}
protected:
public:
char name[64];
int age ;
};
//函数对象 仿函数 重载函数调用操作符()的操作 进行比较大小
struct StuFunctor
{
bool operator()(const Student &left, const Student &right)
{
return (left.age < right.age);
}
};
//
int main()
{
set<Student, StuFunctor> set1;
Student s1("张1", 32);
set1.insert(s1);
set1.insert(Student("张2", 32) );
set1.insert(Student("张3", 53) );
set1.insert(Student("张4", 34) );
//打印输出
for (set<Student, StuFunctor >::iterator it = set1.begin(); it != set1.end(); it++)
{
cout<< it->age << "\t" <<it->name << endl;
}
while(1);
return 0;
}