STL源码剖析(8)函数对象和配接器
函数对象
函数对象就是重载了()运算符的对象,这个对象可以像函数指针一样被调用。
函数对象主要用作算法的参数。很多算法提供了一个函数对象的参数,让用户自定义某些操作。
但实际上c++11出的functional中的函数对象更多是作为回调使用。
书里有些东西过时了,在C++20中很多都干掉了,这里就不看了。
STL中的函数对象
算术类
加减乘除模负
- plus<T>
- minus<T>
- multiplies<T>
- divides<T>
- modulus<T>
- negate<T>
关系类
等,不等,大,小,大等,小等
- equal_to
- not_equal_to
- greater
- greater_equal
- less
- less_equal
逻辑类
与或非
- logical_and
- logical_or
- logical_not
配接器
配接器就是对STL中现有的组件进行接口的包装,使其能实现一些特殊的功能。
容器配接器
容器配接器有两个:queue和stack,他们的底层都是deque,就是对deque做了一层包装
迭代器配接器
对迭代器包装,配接器底层保存了一个迭代器对象。
- insert iterators:利用迭代器赋值被转化成了插入、
- reverse iterators:++变成--这种
- stream iterators
函数对象配接器
这些在c++17和c++20中都被逐渐淘汰了。函数对象在c++11以后有了很大的变化,建议学习现代c++的时候再好好学这个。

浙公网安备 33010602011771号