C++仿函数周边及包装器
- 我最近开了几个专栏,诚信互三!
====> |||《算法专栏》::刷题教程来自网站《代码随想录》。|||
====> |||《C++专栏》::记录我学习C++的经历,看完你一定会有收获。|||
====> |||《Linux专栏》::记录我学习Linux的经历,看完你一定会有收获。|||
====> |||《C#专栏》::记录我复习C#的经历,深度理解,查漏补缺,不定期更新。|||
====> |||《计算机网络专栏》::记录我学习计算机网络,看完你一定会有收获。|||
C++仿函数周边及包装器
- lambda表达式
- lambad表达式的格式和注意
- C++包装器
- bind函数
lambda表达式
lambda表达式很久就在python,java,C#等语言流行,其意义是为了将某些实现简单的函数写在某个区域内,让代码的可读性增加,增加程序员的开发效率。
lambad表达式的格式和注意
lambda表达式的格式如下。
[捕获列表] (形参列表) mutable-> 返回类型
{函数体
}
1).[捕获列表]主要捕获该局部区域内的所有参数,捕获列表中可以传递如下值。
[&]引用捕捉当前区域内部的所有参数,并且可在函数体内修改。
[=]传值捕捉当前区域内所有的参数,捕捉后的参数不可在函数体内修改。
[val]传值捕捉当前区域名为val的变量,不可修改。
[&val]引用捕捉当前区域名为val的变量,可修改。
其中上面的可以套用,如
[=, &val]对val引用捕捉,但对其他参数传值捕捉。
[&, val]对val传值捕捉,但对其他参数引用捕捉。
但不可重复捕捉,如[=,val]…
在类的方法内,捕捉列表还可以捕捉this指针。
2).(形参列表)和普通函数一样,我们可能需要定义一些形参,形参列表中就可以定义。
3).mutable该选项一般定义lambda表达式时都不会被加入,该选项可以让捕捉列表捕捉的变量改变属性,如[ 捕获列表 ]中,传值会导致函数体内部无法修改捕获的结果,而mutable关键字加入后,就可以被修改了。
4).-> 返回值在写lambad表达式时,都可以忽略不写,编译器会自动识别函数体内的返回值,返回。
5).{} 函数体内需要写函数的实现过程,与普通函数的实现无异。
注意:
1).lambda表达式的底层实际上是一个匿名仿函数,每个lambda表达式都通过算法生成一个唯一的类型,所有lambda表达式在未了解包装器前,只能使用auto接收。
2).lambda表达式本质是仿函数,仿函数本质是一个类,lambda表达式内被实现了拷贝构造,可以用另一个lambda表达式构造另一个。
3).lambda表达式若没有参数,则(参数列表)可以不写,但捕捉列表, 和函数体一定得写。
C++包装器
C++兼容C,所有C++内也可以使用函数指针类型,在前面,还存在lambda表达式表示一个函数,同时还存在仿函数可以实现向函数一样调用,已经类内的各种函数,如静态成员函数,成员函数,C++为了整合统一上面三个类型,推出了包装器。
包装器是一个可变模板参数的模板类,Ret是function要包装的函数的返回值,后续的参数包则是要包装的函数的参数。
都可以使用function<ret(arg1…)> 格式包装。
并且被包装后,它们的类型都相同。
包装器包装类内的函数。
要注意包装类内的函数,需要指定类域,同时,静态成员函数,则需要在前面加上&,而成员函数则无所谓。
所以包装器的出现让多种函数定义了相同的类型,在统一编码方面大有好处,比如回调函数。
bind函数
bind函数也是C++11后加入的,其作用是在传递函数参数的时候,绑定某个参数,让函数的调用更加方便。
bind函数接收的第一个参数是其要绑定的函数名,后续接收一个参数包,参数包可以传递占位符,或者直接将某个参数绑定。
占位符必须从_1开始,并且要求必须是连续的,但是占位符的顺序可以是不一样的。
实际上,占位符中_1代表被绑定函数的第一个参数,以此类推,若想要正确调用f_bind_class,则需要将参数传递的顺序改变。
为了调用示例函数更加方便,我们可以将testclass绑定。
绑定某些参数可以让我们在调用函数时,更加方便,若使用bind函数绑定了某个参数,在使用function接收该函数的返回值时,则也不需要在模板列表中写被绑定的参数的类型。
相关文章:
C++仿函数周边及包装器
我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》࿱…...
改进灰狼算法优化随机森林回归预测
灰狼算法(Grey Wolf Optimization,GWO)是一种基于自然界灰狼行为的启发式优化算法,在2014年被提出。该算法模仿了灰狼群体中不同等级的灰狼间的优势竞争和合作行为,通过不断搜索最优解来解决复杂的优化问题。 灰狼算法…...
Hadoop生态系统的核心组件探索
理解大数据和Hadoop的基本概念 当我们谈论“大数据”时,我们指的是那些因其体积、速度或多样性而难以使用传统数据处理软件有效管理的数据集。大数据可以来自多种来源,如社交媒体、传感器、视频监控、交易记录等,通常包含了TB(太…...
命令行方式将mysql数据库迁移到达梦数据库(全步骤)
因项目需求,需要将mysql数据库转换为国产达梦数据库,但由于安全问题,正式环境只能用命令行方式连接,下列是操作全步骤 目录 一、操作逻辑二、操作步骤1、本地安装达梦相关工具2、将服务器mysql导出到本地a) 服务器命令行导出mysql…...
旅游系列之:庐山美景
旅游系列之:庐山美景 一、路线二、住宿二、庐山美景 一、路线 庐山北门乘坐大巴上山,住在上山的酒店东线大巴游览三叠泉,不需要乘坐缆车,步行上下三叠泉即可,线路很短 二、住宿 长江宾馆庐山分部 二、庐山美景...
杭州恒生面试,社招,3年经验
你好,我是田哥 一位朋友节前去恒生面试,其实面试问题大部分都是八股文,但由于自己平时工作比较忙,完全没有时间没有精力去看八股文,导致面试结果不太理想,HR说节后通知面试结果(估计是凉了&…...
python virtualenv 创建虚拟环境指定python版本,pip 从指定地址下载某个包
一、安装 pip install virtualenv是python3 的话 换成 pip3 如果下载过慢可以从国内链接下载 如下从阿里云下载 pip3 install -i https://mirrors.aliyun.com/pypi/simple virtualenv二、创建指定python版本的虚拟环境 virtualenv venv --pythonpython3.12这里的venv 为创…...
open feign支持调用form-data的接口
增加 consumes {MediaType.MULTIPART_FORM_DATA_VALUE}) 示例 PostMapping(value "/ocr", consumes {MediaType.MULTIPART_FORM_DATA_VALUE})DataResponse ocr(RequestPart("file") MultipartFile multipartFile,RequestPart("fileType") Str…...
ESD静电问题 | TypeC接口整改
【转自微信公众号:深圳比创达EMC】...
基于springboot+mybatis+vue的项目实战之前端
步骤: 1、项目准备:新建项目,并删除自带demo程序,修改application.properties. 2、使用Apifox准备好json数据的mock地址 3、编写基于vue的静态页面 4、运行 整个的目录结构如下: 0、项目准备 新建项目࿰…...
开源软件托管平台gogs操作注意事项
文章目录 一、基本说明二、gogs私有化部署三、设置仓库git链接自动生成参数四、关闭新用户注册入口 私有化部署gogs托管平台,即把gogs安装在我们自己的电脑或者云服务器上。 一、基本说明 系统环境:ubuntu 20.4docker安装 二、gogs私有化部署 前期准…...
Linux cmake 初窥【3】
1.开发背景 基于上一篇的基础上,已经实现了多个源文件路径调用,但是没有库的实现 2.开发需求 基于 cmake 的动态库和静态库的调用 3.开发环境 ubuntu 20.04 cmake-3.23.1 4.实现步骤 4.1 准备源码文件 基于上个试验的基础上,增加了动态库…...
centos学习- ps命令详解-进程监控的利器
ps命令详解:Linux进程监控的利器 在Linux系统管理中,进程监控是一个至关重要的环节。ps命令是Linux系统中一个功能强大的进程查看工具,通过它可以获取当前系统中所有进程的快照信息,并深入了解各个进程的详细信息。结合其各种选项…...
C++贪心算法
关于string的系统函数! (注:以下函数只可用于string,不适用其他类型的变量) ① a.size(); 这个系统函数是用来获取这个string变量的长度的,我们通常会新建一个变量来保存他,以便之后使用。 …...
访问网络附加存储:nfs
文章目录 访问网络附加存储一、网络附加存储1.1、存储类型1.3、通过NFS挂载NAS1.4、NFS挂载过程服务端客户端 二、实验:搭建NFS服务端及挂载到nfs客户端服务端客户端测试命令合集服务端客户端 访问网络附加存储 一、网络附加存储 1.1、存储类型 DAS:Di…...
jsp 实验12 servlet
一、实验目的 掌握怎样在JSP中使用javabean 二、实验项目内容(实验题目) 编写代码,掌握servlet的用法。【参考课本 上机实验1 】 三、源代码以及执行结果截图: 源代碼: inputVertex.jsp: <% page lang…...
「 网络安全常用术语解读 」通用配置枚举CCE详解
1. 背景介绍 NIST提供了安全内容自动化协议(Security Content Automation Protocol,SCAP)为漏洞描述和评估提供一种通用语言。SCAP组件包括: 通用漏洞披露(Common Vulnerabilities and Exposures, CVE):提供一个描述…...
一机游领航旅游智慧化浪潮:借助前沿智能设备,革新旅游服务效率,构建高效便捷、生态友好的旅游服务新纪元,开启智慧旅游新时代
目录 一、引言 二、一机游的定义与特点 (一)一机游的定义 (二)一机游的特点 三、智能设备在旅游服务中的应用 (一)旅游前的信息查询与预订支付 (二)旅游中的导航导览与互动体…...
设计模式学习笔记 - 项目实战三:设计实现一个支持自定义规则的灰度发布组件(实现)
概述 上两篇文章,我们讲解了灰度组件的需求和设计的思路。不管之前讲的限流、幂等框架,还是现在讲的灰度组件,功能性需求都不复杂,相反,非功能性需求是开发的重点。 本章,按照上篇文章的灰度组件的设计思…...
BJFUOJ-C++程序设计-实验2-类与对象
A 评分程序 答案: #include<iostream> #include<cstring>using namespace std;class Score{ private:string name;//记录学生姓名double s[4];//存储4次成绩,s[0]和s[1]存储2次随堂考试,s[2]存储期中考试,s[3]存储期…...
数据库语法复习
总结: DDL(数据定义语言) CREATE DATABASE:创建一个新的数据库。DROP DATABASE:删除一个数据库。CREATE TABLE:创建一个新的表。DROP TABLE:删除一个表。ALTER TABLE:修改表的结构&a…...
Tomcat、MySQL、Redis最大支持说明
文章目录 一、Tomcat二、MySQL三、Redis1、最大连接数2、TPS、QPS3、key和value最大支持 一、Tomcat 查看SpringBoot内置Tomcat的源码,如下: 主要就是看抽象类AbstractEndpoint,可以看到默认的核心线程数10,最大线程数200 通过…...
MATLAB数值计算工具箱介绍
MATLAB是一个强大的数学计算平台,它提供了广泛的数值计算工具箱,这些工具箱覆盖了从基础的线性代数到复杂的数值分析和优化问题。以下是MATLAB中一些关键工具箱的详细介绍: 1. 线性代数工具箱(Linear Algebra Toolbox)…...
2023 广东省大学生程序设计竞赛(部分题解)
目录 A - Programming Contest B - Base Station Construction C - Trading D - New Houses E - New but Nostalgic Problem I - Path Planning K - Peg Solitaire A - Programming Contest 签到题:直接模拟 直接按照题目意思模拟即可,为了好去…...
ROS2学习——Docker环境下安装于使用(1)
目录 一、简要 二、ROS2和ROS1区别 三、环境搭建与安装 (2)拉取ubuntu22.04镜像 (2)安装ROS2 1. 基本设置 2.设置源 3.安装ROS2功能包 4.测试 四、相关指令学习 1.小海龟测试 2.ros2 node等指令 3.rqt 一、简要 随着R…...
数据仓库之Hologres
官方文档 简介 Hologres是阿里云推出的一种云原生的实时分析型数据仓库。它是基于开源项目Apache Hudi(Hadoop Upserts Deletes and Incrementals)进行扩展和优化的。Hologres提供了高性Hologres是阿里云推出的一种云原生的实时分析型数据仓库。它是基…...
MacOS搭建docker本地私有镜像库
相关环境 macOS: bigsur 11.7.8 docker desktop: 4.22.0 docker engine: 24.0.5 准备工作 本机已经安装好docker desktop,未安装的自行参考其他教程。如果不能翻墙,可以修改本地的镜像地址,可在docker desktop 设置中的docker engine中修…...
Unity Material(材质)、Texture(纹理)、Shader(着色器)简介
文章目录 一、概念二、Rendering Mode三、Main Maps三、参考文章 一、概念 Material(材质):物体的“色彩”、“纹理”、“光滑度”、“透明度”、“反射率”、“折射率”、“发光度”等,材质的本质是shader的实例(载体)Texture(贴图):附件到…...
《视觉十四讲》例程运行记录(1)—— 课本源码下载和3rdparty文件夹是空的解决办法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、第二版十四讲课本源码下载1. 安装git工具 二、Pangolin下载和安装1. 源码下载2. Pangolin的安装(1) 安装依赖项(2) 源码编译安装(2) 测试是否安装成功 二、…...
VLM与基础分割模型的联合使用
最近做的项目里有涉及大模型,里面有一部分的功能是: 将图片输入VLM(视觉语言模型,我使用的是llava),询问图中最显著的物体,将其给出的答案作为基础分割模型(我使用的是Grounded-SAM)的text prom…...
网站建设我们的优势/郑州seo优化顾问热狗
以上图为例,我们可以通过这样的界面来新建一个项目。当点击保存的时候,其实是需要用javasript的方式去保存该项目的数据。不是吗?此时,基于javascript的对象模型就很重要了。 事实上,MOSS 2010很多的地方都用到了这套E…...
网站建设原创文章 关键词/广州市网络seo外包
rpm 包安装过程中依赖问题“libc.so.6 is needed by XXX”解决方法(Liunx安装mysql报错) 原因:安装了64位的Linux 我安装的是 centOS 6.5 64位 64位的linux 对于 默认只安装主架构所需要的包 不会安装其他多余的包, 报错信息&…...
wordpress转dede/百度网址提交入口
Boost 日志库使用 课程 《Boost日志库快速入门》工程配置Qt 中使用Boost日志库配置 INCLUDEPATH C:/Project\Boost\boost_1_69_0LIBS C:/Project/Boost/lib/libboost_log-vc140-mt-gd-x32-1_69.lib LIBS C:/Project/Boost/lib/libboost_filesystem-vc140-mt-gd-x32-1_69.lib…...
旅游网站只做/seo数据分析
介绍 Python代码审计方法多种多样,但是总而言之是根据前人思路的迁移融合扩展而形成。目前Python代码审计思路,呈现分散和多样的趋势。Python微薄研发经验以及结合实际遇到的思路和技巧进行总结,以便于朋友们的学习和参考。 SQL注入和ORM注入…...
百度权重查询方法/东莞百度推广优化排名
为什么80%的码农都做不了架构师?>>> 运行一下 python manage.py sycdb 报错: ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb 运行: pip install mysql-python 报错:EnvironmentError…...
诸城哪里有做网站的/免费行情网站
需求:需要对list中LastActualAmount字段内容求和,LastActualAmount为bigdecimal类型。 int mathSumInt list.stream().mapToInt( Student::getMathScoresInt ).sum(); //int类型long mathSumLong list.stream().mapToLong( Student::getMathScoresLong…...