基本概念

函数对象(Function Objects),也称为仿函数(Functors),是C++ STL中的重要概念。它们是重载了operator()的类或结构体的对象,可以像函数一样被调用,同时具备对象的特性。

还有一个概念,只要可以与小括号进行结合展示出函数含义都可以称为可调用对象

可调用对象包含了:

很多资料中模糊了函数对象和可调用对象的概念说明。下图出自C++之父的书《C++程序设计语言-第4卷》

函数对象

还有一个更大范围的概念:可调用实体,它在可调用对象的基础上还增加了成员函数、成员函数指针、指向数据成员的指针(这三者的共同特点是也可以调用,但不能仅凭自己完成调用)。

STL预定义函数对象

算术函数对象

比较函数对象

逻辑函数对象

自定义函数对象

简单函数对象

带状态的函数对象

可配置的函数对象

函数对象与STL算法

查找算法

排序算法

数值算法