zoukankan      html  css  js  c++  java
  • 仿函数(又名函数对象)与仿函数配接器

    如果你不懂,为什么STL的很多容器构造函数或者其他什么函数,可以既接受一个函数指针,又可以接受函数对象,你应该看看下面的介绍:

    从实现来说,函数对象就是一个“行为类似函数”的对象,为了能够“行为类似函数”,其类别定义中必须自定义function call运算子(operator())。仿函数是为了STL能够实现更好的抽象性。仿函数主要用于STL中,当需要传入一个函数时使用。虽然通常来说我们可以直接传入一个函数指针,但是函数指针的抽象性不够强,同时函数指针也无法跟STL中其他组件搭配使用,所以仿函数还是有比较大的意义的。在STL中有很多仿函数,我们暂时不介绍它们。下面再看看仿函数配接器。

    配接器是一种设计模式,它在原有类型的基础上扩展成为另外一个接口,使原本因为接口不兼容而不能合作的类型可以一起工作。仿函数的配接操作包括bind(将二元仿函数的第一或者第二个参数固定为某个值),negate(逻辑否定,将某个一元或者二元仿函数的返回值取反),compose(组合调用,用一个函数的返回值作为另外一个的参数执行调用)以及对一般函数(辅助函数是ptr_fun)或者成员函数(辅助函数是mem_fun, mem_fun_ref)的修饰,使之成为一个仿函数。需要特别注意的是,配接器的参数是仿函数,返回值跟仿函数的返回值一致,极大可能不是仿函数,所以配接器不能组合使用:adaptor1(adaptor2)。为了配合配接器工作,每个配接器都有一个辅助函数,用于生成配接器对象。比如bind1st是binder1st的辅助函数。平时我们基本都是用辅助函数的,所以,不要以为辅助函数是配接器。

  • 相关阅读:
    数字索引分页
    经典语录 cloud
    日常交际技巧经验总结100句(大全) cloud
    成大事必备9种能力、9种手段、9种心态 cloud
    浅谈服务器虚拟化
    使用mysqlard监控mysql服务器性能
    CentOS服务器iptables配置
    如何编写好的应用程序
    电子杂志新出路
    泸州老窖集团有限责任公司电子化职能化和网络化的管理新模式
  • 原文地址:https://www.cnblogs.com/whyandinside/p/2723500.html
Copyright © 2011-2022 走看看