四、仿函数
函数对象(仿函数)是一个类,不是一个函数。
函数对象(仿函数)重载了”() ”操作符使得它可以像函数一样调用。
分类:假定某个类有一个重载的operator(),而且重载的operator()要求获取一个参数,我们就将这个类称为“一元仿函数”(unary functor);相反,如果重载的operator()要求获取两个参数,就将这个类称为“二元仿函数”(binary functor)。
- 第一种:先将“操作”设计为一个函数,再将函数指针当做算法的一个参数
- 第二种:将“操作”设计为一个仿函数(在语言层面是一个class),再以该仿函数产生一个对象,并以此对象作为算法的一个参数
仿函数例一:比较大小
- 在上面的代码中,第一种调用方式是使用comp的定义的一个对象,然后通过这个对象来调用操作符(),来实现两个数组的比较的;
- 对于第二个调用comp()(1, 2)