函数对象(伪函数)

  • 有运算符重载的对象
  • xx元函数对象:看operator()函数有几个形参。
    函数对象、泛型算法

函数对象的应用

只应用在泛型算法之中,改变泛型算法的行为,能够内联,节省函数的调用开销。

C++ STL的函数对象 (greater less greater_equal)

使用实例

函数对象、泛型算法

库里面全是二元函数对象,二元函数对象+绑定器可以得到一元函数对象

绑定器(绑定其中一个参数)将二元的函数转换成一元的(因为库里只有二元的)

bind1st:需要两个参数:要转换的 函数对象 和一个值 x。简单理解,bind1st 把 x 作为函数对象的左值
bind2nd :把 x 作为 函数对象 的右值。
函数对象、泛型算法

运行结果:
函数对象、泛型算法

Lamba表达式(函数对象)就是()的重载,比绑定器好用

lambda函数能够捕获lambda函数外的具有自动存储时期的变量。函数体与这些变量的集合合起来叫闭包。
[] 不截取任何变量
[&] 截取外部作用域中所有变量,并作为引用在函数体中使用
[=] 截取外部作用域中所有变量,并拷贝一份在函数体中使用
[=, &foo] 截取外部作用域中所有变量,并拷贝一份在函数体中使用,但是对foo变量使用引用
[bar] 截取bar变量并且拷贝一份在函数体重使用,同时不截取其他变量
[x, &y] x按值传递,y按引用传递
[this] 截取当前类中的this指针。如果已经使用了&或者=就默认添加此选项
函数对象、泛型算法

自己实现sort 泛型算法

函数对象、泛型算法

相关文章:

  • 2022-12-23
  • 2021-09-30
  • 2021-12-11
  • 2021-12-01
  • 2022-12-23
  • 2021-09-23
  • 2022-03-07
  • 2022-12-23
猜你喜欢
  • 2022-01-19
  • 2021-06-27
  • 2021-08-12
  • 2021-11-30
  • 2022-12-23
  • 2021-09-20
  • 2022-12-23
相关资源
相似解决方案