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++的时候再好好学这个。

posted @ 2022-08-05 12:04  Destiny233  阅读(67)  评论(0)    收藏  举报