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。

  • 相关阅读:
    再谈HTTP通信
    【ZOJ】[1586]QS Network
    【ZOJ】[1586]QS Network
    【POJ】[2421]Constructing Roads
    【POJ】[2421]Constructing Roads
    【POJ】[2031]Building a Space Station
    【POJ】[2031]Building a Space Station
    【POJ】[1287]Networking
    【POJ】[1287]Networking
    【杭电】[1875]畅通工程再续
  • 原文地址:https://www.cnblogs.com/suui90/p/13549780.html
Copyright © 2011-2022 走看看