C++标准库分析总结(十)——<仿函数/函数对象>

news2025/2/24 13:24:04

目录

1.functor仿函数简介   

2 仿函数的分类

3 仿函数使用

4 仿函数可适配的条件






1.functor仿函数简介   

  • 仿函数STL中最简单的部分存在的本质就是为STL算法部分服务的,一般不单独使用。
  • 仿函数(functors)又称为函数对象(function objects),虽然函数指针虽然也可以作为算法的参数,但是函数指针不能满足STL对抽象性的要求,且无法和STL其他组件搭配
  • 仿函数就是使一个类的使用看上去像一个函数,其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了,本质就是类重载了一个operator(),创建一个行为类似函数的对象
  • 对于重载了()操作符的类,可以实现类似函数调用的过程,所以叫做仿函数,实际上仿函数对象仅仅占用1字节,因为内部没有数据成员,仅仅是一个重载的方法而已。
  • 实际上可以通过传递函数指针实现仿函数类似的功能,但是为了和STL内部配合使用,他提供了仿函数的特性

2 仿函数的分类

标准库目前提供了约有24个仿函数,分为算数类、逻辑运算类、相对关系类。

3 仿函数使用

下图中myclass是我们自己写的仿函数,但是由于没有继承仿函数的公共父类,所以就不能融入到STL中。

4 仿函数可适配的条件

如果我们要自己写仿函数,并且融入到STL中, 就必须继承两个中的一个父类两个操作符的父类或者一个操作符的父类),只有继承了才能被适配器去修饰和改造。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 命令行cmd.exe简单介绍

介绍: 在windows系统中,Windows命令shell(cmd.exe),在 SystemRoot/System32目录下。 启动命令行,在"开始"——>"搜索"中输入cmd,此时命令行展示当前工作目录,默认为/u…

JS(第二十四课)JS高级Es6语法

ECMAScript 6_百度百科 (baidu.com) 第一部分:百度简介 ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型…

mybatis 01: 静态代理 + jdk动态代理 + cglib动态代理

背景 有时目标对象不可直接访问,只能通过代理对象访问 图示: 示例1: 房东 > 目标对象房屋中介 > 代理对象你,我 > 客户端对象示例2: 运营商(电信,移动,联通) > 目标对象第三方公司…

(Java)P1223 排队接水

排队接水 一、 题目描述 有 nnn 个人在一个水龙头前排队接水,假如每个人接水的时间为 TiT_iTi​,请编程找出这 nnn 个人排队的一种顺序,使得 nnn 个人的平均等待时间最小。 二、输入格式 第一行为一个整数 nnn。 第二行 nnn 个整数&…

Linux下加密库Libsodium 使用实践(ip监听、封装的加密消息、运行系统命令)

Libsodium 是一个用C语言编写的库,是一种新的易于使用的高速软件库,用于网络通信、加密、解密、签名等实现和简化密码学。 完成 Libsodium 安装 Libsodium 是一个用于加密,解密,数字签名,密码哈希,等的&a…

java每日一练(4)

java每日一练(4) 文章目录单选部分不定项选择题多选题编程题单选部分 1.下列与队列结构有关联的是() A 函数的递归调用   B 数组元素的引用   C 多重循环的执行   D 先到先服务的作业调度 队列的特点 : 先进先出 , 所以 答案非常明显 D  …

【python】通过gitlab v4版本api接口获取所有项目代码示例

目录一、环境信息二、参数说明三、脚本使用说明1. 使用python2运行git.py2. python脚本执行完毕会自动生成如下四个文件3. 其他脚本说明四、脚本源码1. git.py2. update.sh五、脚本扩展说明附录一、环境信息 脚本适用于:python2 测试版本:2.7.18 二、…

于我来说,赌才是世界杯的灵魂~

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 先看这里前言了解足球首看世界杯再看世界杯前言 身边朋友也有踢球的,但是不多。就两个,一个是我同学,一个是我同事…打篮球的倒是不少,猜想…

这五个适合上班族的副业你知道多少

第二职业赚钱的路子有什么?从理论上讲,第二职业就是一个创业的过程,也遵照自主创业一般规律。可是第二职业是在业余时间和没有灵活运用资源挣钱,和创业有所不同。第二职业门坎变低,更比较发达,因此今天小编…

Arduino--音乐频谱

本文主要介绍基于Arduino实现的音乐频谱显示,音乐频谱原理就是声音传感器(MIC)接收音频信号后通过FFT将时域信号转换成频域信号,再将音频信号频域分量分别显示在对应的LED点阵屏上,呈现出音乐随频律动的感觉&#xff0…

Windows Docker Desktop安装K8S

Docker DeskTop提供了K8S支撑,安装也较为简单。对于本地开发,测试部署项目较为方便。下面进行简单说明。 DockerDesktop配置镜像源,较为简单,有许多网上例子直接参考即可。启用K8S等待一阵子,K8S即可安装成功。可以看…

MySQL存储引擎介绍

首先 我们要知道 什么是引擎 我们常见的 客机 直升机 火箭等等 他们都有自己的引擎 引擎也就是指一个机器的核心 当然 你如果是一个飞机 那你自然是不能用火箭的引擎的 存储引擎就是存储数据 建立索引 更新/查询数据等技术的实现方式,存储引擎是基于表的&#xf…

TDK | CeraLink 电容器快速切换逆变器的革新

本周向大家介绍另一款压电技术的产品CeraLink。 CeraLink 是一系列非常紧凑的电容器,用于稳定直流链路中的电压。因此它们适合用作缓冲器或直流母线电容器。这些产品基于 PLZT 陶瓷,旨在为工程师提供针对快速开关转换器、空间要求非常紧凑的转换器和需要…

Java项目:饰品商城系统(java+SSM+JSP+javascript+jQuery+Mysql)

源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目分为前台与后台,有普通用户与管理员两种角色; 管理员角色包含以下功能: 管理员登录,用户管理,一级分类管理,二级分类管理,饰品管理,订单管理、发货、…

Linux中对磁盘(硬盘)分区和挂载

记录:346 场景:在CentOS 7.9操作系统上,使用fdisk对磁盘分区;使用mkfs.xfs创建文件系统;使用mount挂载磁盘到目录;使用umount卸载目录已挂载的磁盘;修改文件系统表fstab,满足开机启…

【计算机毕业设计】网上游戏代练商城系统

一、系统截图(需要演示视频可以私聊) 摘要 随着当今社会的发展,时代的进步,各行各业也在发生着变化,本系统健身房这一方面,利用网站游戏代练已经逐步进入人们的生活。传统的网上游戏代练,都是用…

前端基础入门

HTML的基本概念 WWW(World Wide Web,万维网)是一种建立在Internrt上的、全球性的、交互的、多平台的、分布式的信息资源网络。它采用HTML语言描述超文本(Hypertext)文件。这里所说的超文本文件指的是包含链接关系和多…

数据结构与算法中的图

数据结构与算法中的图 图的定义与术语 在线性结构之间,数据元素之间满足唯一的线性关系。每个数据元素(除第一个和最后一个外)只有一个****直接前趋和直接后继** 在树形结构中,数据元素之间有着明显的层次关系,并且每…

实验四、R_b变化对Q点和电压放大倍数的影响 ​

一、题目 研究 RbR_bRb​ 变化对 QQQ 点和 A˙u\dot A_uA˙u​ 的影响。 二、仿真电路 仿真电路如图1(b)、(ccc)所示。晶体管采用 FMMT5179。其datasheet的相关参数如下:(a)FMMT5179的参数(a)\textrm{FMMT5179}的参数(a)FMMT5179的参数 (b)Rb为3MΩ时的情况(b)R…

RDD——Action算子

常用Action算子 countByKeycollectreducefoldfirsttaketopcounttakeSampletakeOrderedforeachsaveAsTextFile countByKey() 返回值是一个 字典类型 ## 读取文本文件 rdd1 sc.textFile(f"file:///{ROOT}/data/input/words.txt") rdd2 rdd1.flatMap(lambda x:x.spl…