15 仿函数和函数对象

15 篇文章 0 订阅

仿函数和函数对象

​ 容易写一些小的组件融入到标准库中,作为辅助,functor只为了算法来服务

在这里插入图片描述

仿函数

​ 使用函数模版实现,使用时指定参数类型

在这里插入图片描述

​ identity. select1st, select2nd;

​ 标准库提供的functor都有继承关系,我们自己写的都是单独的struct,没有继承表示没有融入STL的体系结构

​ 在gnuc 4.9中名称发生了改变,用户代码要进行修改

在这里插入图片描述

less<int>(); // 产生了一个临时的对象
greater<int>(); // 产生了一个临时的对象,降序排列
  • 继承了什么? binary function

仿函数的可适配条件(adaptable)

​ 这个仿函数能否被修改,调整 即被适配器适配。

在这里插入图片描述

  • 两个类,unary 一元运算, binary二元运算
  • 理论上大小是0,被继承的话就真的是0了
  • 里面只定义了typedef,派生类只继承了这三个typedef,没有额外的开销
  • 继承不光是继承数据和函数调用权,也可以继承typedef,这种继承在标准库中大量出现
  • 被adapter修改的时候会使用到这些typedef

eg 适配器在工作的时候需要什么信息

在这里插入图片描述

typename Operation::second_argument_type value; // 如果编译通过,就获得了第二个参数的类型

所以functor想要正常工作,必须要继承相应的class,以继承相应的typedef,在适配的时候提供信息。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值