所谓函数对象其实就是一个行为类似函数的对象,它可以不需参数,也可以带有若干参数,其功能是获取一个值,或者改变操作的状态。在C++程序设计中,任何普通的函数和任何重载了调用运算符operator()的类的对象都满足函数对象的特征,因此都可以作为函数对象传递给算法作为参数使用。
常用的函数对象
函数适配器
STL中定义了大量的函数对象,但是有时候需要对函数返回值进行进一步的简单计算,或者填上多余的参数,不能直接代入算法。将一种函数对象转化为另一种符合要求的函数对象。函数适配器可以分为4大类:绑定适配器、组合适配器、指针函数适配器、成员函数适配器。
算法:
STL算法是建立在容器和迭代器的基础之上的。STL算法是一种函数模板,它可以通过迭代器取得元素而无须知道容器的存储细节,甚至不需要直接访问容器。
一般来说,STL的算法可以分为4大类:不可变序列算法、可变序列算法、排序和搜索算法、数值算法。