zoukankan      html  css  js  c++  java
  • 16.5.3 自适应函数符和函数适配器

    STL有五个函数符自适应的相关概念:

    1. 自适应生成器
    2. 自适应一元函数
    3. 以适应二元函数
    4. 自适应谓词
    5. 自适应二元谓词

    函数符成为自适应的原因是,它携带了标识参数类型和返回类型的typedef成员,这些成员分别是:

    1. result_type
    2. first_argument_type
    3. second_argument_type

    例如plus<int>对象的返回类型被标识为plus<int>::result_type,此为int的typedef

    ### 函数符自适应的意义在于:函数适配器对象可以使用函数对象,并认为存在这些typedef成员。

    例如,接受一个自适应函数符参数的函数可以使用result_type成员来声明一个与函数的返回类型匹配的

    变量

    STL提供了使用这些工具的函数适配器类,其中的例子有binder1st、binder2nd类,作用是将接受两个参数的函数

    转换为接受一个参数的函数符(将自适应二元函数转换为自适应一元函数)。

    binder1st类:

    f2是一个自适应二元函数对象,可创建f1: binder1st(f2, val) f1; // val是第一个参数的特定值 

    f1是一个创建的binder1st对象,它与一个将被用作f2( )的第一个参数的特定值(val)相关联。

    ### 这样,使用单个参数调用f1(x)时,返回的值与将val作为第一参数、将f1( )的参数作为第二参数调用f2( )返回的

    ### 值相同,即: f1(x); 等价于 f2(val, x); 

    bind1st函数

    STL提供了比binder1st更方便的bind1st()函数,向其提供用于构建binder1st对象的函数名称和值,它将返回一个这

    种类型的对象。

    ### 如: bind1st(multiplies<double>(), 2.5) 返回一个对象等价于声明一个f1对象

    ###  binder1st(multiplies<double>(), 2.5) f1; 

    binder2ed类:

    ### 工作方式与binder1st相似,只是将常数赋给第二个参数,而不是第一个参数。

    ### 同样,它有一个名为 bind2ed 的助手函数,该助手函数的工作方式类似于bind1st。

  • 相关阅读:
    mysql主从部署
    解决mysql登录警告问题
    使用selenium控制已打开的浏览器
    jTopo生成网络拓扑图
    Python模拟登陆正方教务系统并抓取成绩单
    Pandas库学习笔记
    三种方法实现统计一个句子中的字母数 (setdefault、defaultdict的使用)
    numpy学习笔记
    字符串的模式匹配——Brute-Force算法和KMP算法
    用生成器来改写直接返回列表的函数
  • 原文地址:https://www.cnblogs.com/suui90/p/13549780.html
Copyright © 2011-2022 走看看