当前位置:网站首页>【STL源码剖析】仿函数(待补充)
【STL源码剖析】仿函数(待补充)
2022-07-02 22:13:00 【Cloudeeeee】
7.1 仿函数(fuctors)概观
仿函数的作用:
STL中提供的各种算法,往往有两个版本,其一就是最直观的默认的运算,其二则是运行用户以 “template参数来指定所要采取的策略” 。例如accumulate(),第一个版本是将指定范围内的所有元素相加,第二个版本则可以传入用户指定的操作,来替换这个相加的过程。
要将这种指定的操作当做算法的参数传入算法,唯一的办法是将该操作设计为一个函数,再将函数指针当做算法的一个参数;或者将该操作设计为一个仿函数(实质上是一个class对象),再以该仿函数创建一个对象作为函数的参数传入函数中。
仿函数的实质是一个行为类似于函数的对象,为了能够模拟函数的调用,仿函数就必须重载function call运算符 ,即小括号、operator(),因此我们就可以在仿函数对象后加上(),从而能够调用仿函数所定义的operator()。
STL仿函数的分类:
- 根据操作数的个数:一元、二元
- 根据功能:算术运算、关系运算、逻辑运算
任何程序想要使用STL内建的仿函数,都必须含有< functional >头文件。
仿函数的使用方法:

7.2 可配接(Adaptable)的关键
STL 仿函数应该具备被函数配接器(function adapter)修饰的能力,因此每一个仿函数都必须定义自己的相应型别,就像迭代器定义的五个相应型别一样,这些相应型别是为了让配接器能够取出获得仿函数的某些信息。相应的型别都是一些 typedef 操作,该操作在编译期就执行完毕了,不会对程序的执行效率产生影响,不带来任何额外负担。
仿函数的相应型别主要用来表现函数参数型别和返回值型别,< stl_function.h > 中分别定义了一元仿函数和二元仿函数的基类 unary_function、binary_function,任何仿函数只要依个人需求选择继承其中的一个仿函数,便自动拥有了那些相应型别,也就自动拥有了配接能力。
7.2.1 unary_function
unary_function用来呈现一元仿函数的参数型别及返回值型别:

7.2.2 binary_function
binary_function用来呈现二元仿函数的第一个参数的型别、第二个参数的型别及返回值型别:
边栏推荐
- Redis 过期策略+conf 记录
- SharedPreferences 保存List<Bean> 到本地并解决com.google.gson.internal.LinkedTreeMap cannot be cast to异常
- Potplayer set minimized shortcut keys
- Win11系统explorer频繁卡死无响应的三种解决方法
- 抖音实战~点赞数量弹框
- SQL进阶语法
- 跨境电商如何通过打好数据底座,实现低成本稳步增长
- Jinglianwen technology's low price strategy helps AI enterprises reduce model training costs
- ServletContext learning diary 1
- 2016. maximum difference between incremental elements
猜你喜欢

Realize the linkage between bottomnavigationview and navigation

Jinglianwen technology's low price strategy helps AI enterprises reduce model training costs

Win11系统explorer频繁卡死无响应的三种解决方法

(毒刺)利用Pystinger Socks4上线不出网主机

FOC矢量控制及BLDC控制中的端电压、相电压、线电压等概念别还傻傻分不清楚

Explain promise usage in detail
![Temperature measurement and display of 51 single chip microcomputer [simulation]](/img/83/73ee7f87787690aef7f0a9dab2c192.jpg)
Temperature measurement and display of 51 single chip microcomputer [simulation]

RecyclerView结合ViewBinding的使用

Win11麦克风测试在哪里?Win11测试麦克风的方法

Golang common settings - modify background
随机推荐
20220524_数据库过程_语句留档
程序员版本的八荣八耻~
ADC of stm32
20220527_ Database process_ Statement retention
“一个优秀程序员可抵五个普通程序员!”
Talk about memory model and memory order
2016. 增量元素之间的最大差值
Use the scroll bar of souI when using the real window in souI
SQL进阶语法
Tronapi-波场接口-源码无加密-可二开--附接口文档-基于ThinkPHP5封装-作者详细指导-2022年7月1日08:43:06
psnr,ssim,rmse三个指标的定量分析
在SOUI里使用真窗口时使用SOUI的滚动条
实现BottomNavigationView和Navigation联动
Win11如何开启目视控制?Win11开启目视控制的方法
[npuctf2020]ezlogin XPath injection
提交代码流程
Win11麦克风测试在哪里?Win11测试麦克风的方法
The motivation of AES Advanced Encryption Protocol
MarkDown基本语法
Doorplate making C language