C++ function bind 学习笔记

文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。


笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者:Aliven888

function

function 是一个通用的函数对象容器,可以存储任意可调用对象(函数、函数指针、成员函数、成员变量、lambda 表达式,任何 function 对象,比如一个类,定义了 operator() ),并提供了一致的接口来调用这些对象。通过 function ,可以将一个函数或函数对象作为参数传递给其他函数或存储在容器中,大大提高了灵活性。

格式:
std::function<return-type(param-type ...)> fun = funName;

  • return-type:函数返回值类型。
  • param-type … :函数参数(可以有多个,使用 逗号 分割)。
  • fun :定义的函数名称。
  • funName:目标函数名称。

bind

bind 是将函数和其参数进行绑定的工具,可以将一个函数和部分参数绑定在一起,生成一个新的函数对象,这个新的函数对象可以像原函数一样进行调用,但会自动填充绑定的参数。

格式:
bind(funName, param1, param2, ...);
bind(&class::funName, param1, param2, ...);

  • funName :函数名称。
  • class::funName :类成员函数名称(前面需要有 &)。
  • param :函数参数(可以有多个,使用 逗号 分割)。

Demo

#include <stdlib.h>
#include <functional>std::int32_t funName(std::int32_t a, std::int32_t b) {return a + b;
}int main(int argc, char *argv[]) {// 指向函数std::function<std::int32_t(std::int32_t, std::int32_t)> fun1 = funName;std::int32_t c = fun1(1, 2);printf("c = %d\n", c);// 指向 lambda 表达式std::function<std::int32_t(std::int32_t, std::int32_t)> fun2 = [](std::int32_t a, std::int32_t b) { return a + b; };std::int32_t d =  fun2(3, 4);printf("d = %d\n", d);// bind 语法auto fun3 = std::bind(funName, 5, 6);std::int32_t e = fun3();printf("e = %d\n", e);return 0;
}// 输出
c = 3
d = 7
e = 11

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

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

相关文章

使用Selenium进行Web应用自动化测试

自动化测试是现代软件开发中不可或缺的一部分&#xff0c;它可以帮助我们快速、准确地验证软件的功能。Selenium是一个广泛使用的自动化测试工具&#xff0c;特别适用于Web应用程序。本文将详细介绍如何使用Selenium进行Web应用自动化测试&#xff0c;并提供丰富的Java代码示例…

C++:特殊类的设计(无线程)

目录 一、设计一个不能拷贝类 二、设计一个只能在堆上创建对象的类 方法一&#xff1a;析构函数私有化 方法二&#xff1a;构造函数私有化 三、设计一个只能在栈上创建对象的类 四、设计一个类不能被继承 五、设计一个只能创建一个对象的类&#xff08;单例模式&#xf…

海思SS928(SD3403)内存地址空间分配和使用

说明 所有 DDR 内存中&#xff0c;一部分由操作系统管理&#xff0c;称为 OS 内存&#xff1b;另一部分由 MMZ 模块管理&#xff0c;供媒体业务单独使用&#xff0c;称为 MMZ 内存。具体描述参考《SS928V100 SDK 安装以及升级使用说明.pdf》的“第5部分 地址空间分配与使用”。…

数学建模MATLAB绘图大全

最近快要开始一年一度的数学建模竞赛啦&#xff0c;接下来争取每天更一篇数学建模算法&#xff01;&#xff08;当然这是理想状态下&#xff09;&#xff0c;今天就先更一些MATLAB常用的绘图吧&#xff0c;论文赏心悦目的关键就在于丰富多彩的图&#xff0c;好看的图一定会成为…

景区智慧公厕,剩余厕位显示,公厕环境监测。

在当今科技飞速发展的时代&#xff0c;景区的服务设施也在不断升级和创新。其中&#xff0c;景区智慧公厕的出现无疑为游客带来了极大的便利。特别是剩余厕位显示和公厕环境监测这两大功能&#xff0c;更是显著提升了景区公厕的管理水平和游客的使用体验。 剩余厕位显示功能是景…

磁钢生产领域上下料解决方案

随着智能制造技术的不断革新&#xff0c;磁钢生产领域正逐步引入自动化生产线。然而&#xff0c;传统的人工上下料方式存在诸多问题&#xff0c;难以满足现代生产需求。富唯智能提出了一款复合机器人磁钢上下料解决方案&#xff0c;通过先进的自动化技术&#xff0c;提高生产效…

一款纯 js 实现的大模型应用服务 FastGPT 解读

背景介绍 最近被不同的人安利了 FastGPT 项目&#xff0c;实际上手体验了一下&#xff0c;使用流程类似之前调研过的 Dify, 包含的功能主要是&#xff1a;任务流的编排&#xff0c;知识库管理&#xff0c;另外还有一些外部工具的调用能力。使用页面如下所示&#xff1a; 实际…

前端实现坐标系转换

一、地理坐标系和投影坐标系 地理坐标系和投影坐标系是地理信息系统&#xff08;GIS&#xff09;中常见的两种坐标系统&#xff0c;它们用于描述和定位地球表面上的点和区域&#xff0c;但在实现方式和应用场景上有所不同。 1. 地理坐标系&#xff08;Geographic Coordinate …

Python pdfplumber库:轻松解析PDF文件

Python pdfplumber库&#xff1a;轻松解析PDF文件 1. 安装2. 基本概念3. 使用场景和示例代码3.1 提取文本3.2 提取表格数据3.3 获取图像信息3.4 分析页面布局3.5 搜索特定文本 4. 总结 在处理PDF文件时,我们经常需要提取文本、图像或表格数据。Python的pdfplumber库为这些任务提…

长安链安装及使用问题

1. 关于golang编译出错: Get “https://proxy.golang.org/chainmaker.org/chainmaker/common/v2/v/v2.2.0.mod“: dial 在网上查阅资料后发现是自己的golang版本太低(1.3一下),因为goalng在最初开发时,国内基本上都会遇到依赖下载不了的问题&#xff0c; 然而在1.3版本后,go…

简单分享下python的Fuk库

目录&#xff1a; 一、Fuk 简介 二、安装和引入 fuk&#xff0c;使用 pip 安装 fuk 库 三、Fuk的应用场景&#xff0c;网络爬虫 四、总结 一、Fuk 简介 fuk 是一个用于处理 Python 数据结构的库&#xff0c;全称为 "Fast and Uncomplicated Kit"。它提供了一系列高效…

前端代码优化之布尔条件判断太长的处理

我们在开发过程中&#xff0c;有时候会遇到多个布尔值条件判断的情况&#xff0c;目前我们项目里的写法大多都是将各种判断糅杂在一起&#xff0c;这样非常不利于阅读和维护。这里给大家推荐下谷歌官方的处理方式。主要有两种优化方案。 例如&#xff0c;一个判断条件如下&…

【CentOS 7.6】Linux版本 portainer本地镜像导入docker安装配置教程,不需要魔法拉取!(找不着镜像的来看我)

吐槽 我本来根本不想写这篇博客&#xff0c;但我很不解也有点生气&#xff0c;CSDN这么大没有人把现在需要魔法才能拉取的镜像放上来。 你们都不放&#xff0c;根本不方便。我来上传资源。 portainer-ce-latest.tar Linux/amd64 镜像下载地址&#xff1a; 链接&#xff1a;h…

C# --- 在项目中使用Attribute + Reflection

C# --- 使用Attribute Reflection的例子 背景如何定义和执行TestCase 背景 E2E是对workflow的测试&#xff0c;将所有E2E test case定义在一个可执行程序里(exe), 定时自动运行 如何定义和执行TestCase 将需要执行的TestCase包装成一个类&#xff0c;并将TestCase分成几个Step…

Chapter11让画面动起来——Shader入门精要学习笔记

Chapter11让画面动起来 一、Unity Shader中的内置变量&#xff08;时间篇&#xff09;二、纹理动画1.序列帧动画2.滚动背景 三、顶点动画1.流动的河流2.广告牌3.注意事项①批处理问题②阴影投射问题 一、Unity Shader中的内置变量&#xff08;时间篇&#xff09; Unity Shader…

东北财税之星:董女士的家乡创业记

乐财业智慧财税赋能平台&#xff0c;是一个帮助财税机构专业提升、业务增长&#xff0c;让财税生意更好做的综合赋能平台。聚焦财税公司业绩增长&#xff0c;预计2027年帮助2000家财税合伙人利润增长300%&#xff0c;致力打造轻量化、批量化、智能化的”业财税“一体财税服务生…

ARCGIS PRO 要素标注

一、普通模式 1、标注&#xff1a;名称和面积&#xff08;无分数线&#xff09; 语言&#xff1a;Arcade $feature.QLR \nRound($feature.Shape_Area,2) 语言&#xff1a;vbscript [QLR] & " " & Round([Shape_Area],2) 2、标注&#xff1a;名称…

ChatGPT如何提升论文写作(附指令集合)

先讲前提&#xff1a; ChatGPT无论是3.5还是4.0都存在非常严重的幻觉问题&#xff0c;目前ChatGPT无法替代搜索引擎。 如果你希望得到更加优质的体验&#xff0c;请用GPT-4.0&#xff0c;幻觉问题上比3.5大幅降低 ChatGPT中文版&#xff0c;一站式AI创作平台​aibox365.com …

Python | Leetcode Python题解之第203题移除链表元素

题目&#xff1a; 题解&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def removeElements(self, head: ListNode, val: int) -> Li…

因版本冲突导致logback的debug日志不打印

因框架调整&#xff0c;降级了logback的版本号&#xff0c;由1.3.12降级为1.2.11&#xff08;因框架限制&#xff0c;只能采用1.2版本&#xff09;&#xff0c;降级后发现debug日志无法打印出来&#xff0c;logback.xml配置文件不生效。后排查发现是与slf4j的版本兼容问题 依赖…