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的辅助函数。平时我们基本都是用辅助函数的,所以,不要以为辅助函数是配接器。

  • 相关阅读:
    禅道 之 项目开发必备
    Cmd 命令大全
    Php 性能参数优化 及 Iptables 防火墙限制用户访问平率
    Nginx 性能参数优化
    Mysql 性能调优参数
    Postfix的工作原理
    python三次输入错误验证登录
    python shopping incomplete code
    MySQL + Atlas --- 部署读写分离
    网站流量分析项目day03
  • 原文地址:https://www.cnblogs.com/whyandinside/p/2723500.html
Copyright © 2011-2022 走看看