STL之仿函数,适配器简介

1.仿函数

1.1 定义:

      本质是一个类,是一个像使用函数一样直接名称+括号就可以调用的类,事实上就是一个重载了operator()函数的类。

1.2 目的:

      具有内部状态的功能,这是函数所不能比拟的。

1.3 例子:

最后的结果可能根据STL的实作可能会有所区别。

 

2 函数配接器:

2.1 定义:

      函数配接器是一种特殊的仿函数。能够将仿函数和另外一个仿函数结合起来的函数或者说是一个将仿函数作为参数的仿函数。预先定义好的函数配接器有

            bind1st(op, value),

            bind2nd(op, value),

            not1(op),

            not2(op)

2.2 分类:

      函数适配器有两种:

            针对一般函数(非成员函数)而设计的函数适配器

            针对成员函数而设计的函数适配器

2.3 针对一般函数(非成员函数)而设计的函数适配器:

      这种是我们最经常使用的用法。通过函数适配器对一个参数进行绑定。

2.4 针对成员函数而设计的函数配接器

      这里所说的成员函数不包括operator(). 这种用法不多见。是通过mem_fun_ref进行转换,将原本针对某个元素的函数调用转为调用被传递变量(*itr  itr为iv的迭代器)的成员函数。

2.5 可以使用函数配接器的自定义仿函数

      函数配接器只能用在系统仿函数(例如less)中,如果我们想要我们的仿函数能够使用函数配接器,必须然类从unary_function或binary_function派生而来。因为函数适配器里面用到了参数的特定成员(例如T1::argument_type, T1::result_type),所以我们只要在类继承列表里添加

public std::unary_function<T1,T1>

或public std::binary_function<T1,T2,T1>即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值