C++基础std::bind

目录

 

说明

举例子:


说明

std::bind是一个函数模板,用于创建一个可调用对象,该对象可以在稍后的时候被调用。bind的作用是将函数与参数绑定在一起,在调用时可以自动传入预定的参数值。

std::bind的基本语法如下:

template< class F, class... Args> /unspecified/ bind( F&& f, Args&&... args );

其中,F是需要绑定的函数或函数对象,Args是绑定函数所需的参数。

所以说可以认为bind是函数特殊引用

举例子:

void f(int& n1, int& n2, const int& n3)
{std::cout << "In function: " << n1 << ' ' << n2 << ' ' << n3 << '\n';++n1; // 增加存储于函数对象的 n1 副本++n2; // 增加 main() 的 n2// ++n3; // 编译错误
}int n1 = 1, n2 = 2, n3 = 3;std::function<void()> bound_f = std::bind(f, n1, std::ref(n2), std::cref(n3));n1 = 10;n2 = 11;n3 = 12;std::cout << "Before function: " << n1 << ' ' << n2 << ' ' << n3 << '\n';bound_f();std::cout << "After function: " << n1 << ' ' << n2 << ' ' << n3 << '\n';

输出如下,std::ref 和 std::cref 是 C++ 标准库中的两个实用工具,它们分别用于创建对对象的引用和常量引用的包装器

 上面例子还可以改成下面,我们根据情况分布绑定

// using namespace std::placeholders;auto bound_f = std::bind(f, _1, _2, std::cref(n3));
// _1是placeholders占位参数,可以之后传递 
bound_f(n1, n2);

例子2

当然也可以 绑定lambda表达式、成员函数之类,与上面例子出入不大,这里举个stl的用例

void printValue(int& value) {std::cout << "Value: " << value << std::endl;
}int main() {int x = 10;std::vector<std::function<void()>> funcs;// 使用 std::ref 包装 x 的引用,并将其存储在 funcs 中funcs.emplace_back(std::bind(printValue, std::ref(x)));// 调用函数,输出 "Value: 10"funcs[0]();return 0;
}

 

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

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

相关文章

Ubuntu16-18网卡配置

Ubuntu16配置一网卡多ip地址 vi /etc/network/interfaces auto eno1iface eno1 inet staticaddress 100.100.100.100netmask 255.255.255.0gateway 100.100.100.254dns-nameservers 8.8.8.8auto eno1:0 iface eno1:0 inet staticaddress 103.193.172.186netmask 255.255.255.0…

1. zabbix监控服务器部署

zabbix监控服务器部署 一、监控的作用1、监控的方式2、zabbix监控获取数据的方式 二、zabbix server部署1、确保时间同步2、添加epel源3、添加zabbix仓库4、安装zabbix服务端软件5、在数据库创建zabbix需要的表、授权用户6、编辑zabbix server配置文件&#xff0c;指定数据库连…

Clickhouse DBA常用的sql语句

clickhouse系统表官方文档https://clickhouse.com/docs/en/operations/system-tables Clickhouse的语法有点像Mysql Clickhouse没有delete和update语句&#xff0c;使用alter来替代 https://clickhouse.com/docs/zh/sql-reference/statements/alter/delete ALTER TABLE [db.]…

在WordPress中使用AI的实用方法:入门级

随着人工智能&#xff08;AI&#xff09;的快速发展&#xff0c;WordPress平台上引入了越来越多的工具和插件&#xff0c;为网站管理员提供了强大的功能。这些工具不仅可以提升网站的用户体验&#xff0c;还能简化网站管理过程。本文将介绍几种在WordPress中使用AI的实用方法&a…

emacs verilog-mode RTL集成

最近用了一下emacs,用于集成一下自己的子系统。只能说真香。记录一下使用规则和收藏几个比较好的网站。 主要参考这个网站即可。 emacs-verilog mode中文网站: https://www.wenhui.space/docs/02-emacs/verilog_mode_useguide/ 技巧 1.常用模板 下面模板基本上Verilog …

广州化工厂可燃气体报警器检定检验:安全生产新举措显成效

随着科技的不断发展&#xff0c;可燃气体报警器的检定检验技术也在不断进步。 广州的一些化工厂开始采用先进的智能检测系统和数据分析技术&#xff0c;对报警器的性能进行更加精准和全面的评估。 这些新技术不仅能够提高检定检验的效率和准确性&#xff0c;还能够为化工厂的…

boost io 上一篇ppppppppppp

111111111111111111111111111111111111111111111111 RPC 既不是协议&#xff0c;也不是框架。只是一个概念&#xff0c;一种通信方式&#xff0c;底层有很多实现方式。 222222222222222222222222222222222222222222222222222222222 class async_listener { public: typedef b…

大数据的力量:推动战略决策和业务转型

在当前全球化的时代背景下&#xff0c;国际间的联系日益紧密&#xff0c;世界变得更加互联互通。面对各种危机&#xff0c;数据驱动决策和分析显得愈发重要。从医学研究到市场趋势分析&#xff0c;大数据技术在各个领域发挥着关键作用&#xff0c;推动着一场深刻的变革浪潮。 大…

打开IE自动跳转EDGE的解决方法

目录 1. 创建快捷方式的解决方案 2. 其他可以尝试但未必靠谱的方法 2.1 通过设置EDGE浏览器实现 2.2 设置internet属性 2.3 BHO拓展管理 找到Windows10中的IE浏览器的方法&#xff1a; WIN Q&#xff0c;打开搜索栏&#xff1b;键入IE&#xff0c;即可看到IE浏览器 1. …

Java Stream流应用

Stream流的核心方法 Stream流的方法主要包含如图的几种 提供部分应用场景做个思考&#xff1a; (1)从员工集合中筛选出salary大于8000的员工&#xff0c;并放置到新的集合里。 (2)统计员工的最高薪资、平均薪资、薪资之和。 (3)将员工按薪资从高到低排序&#xff0c;同样薪资…

深度理解微信小程序技术架构:从前端到后台

在当今移动互联网的时代&#xff0c;微信小程序作为一种轻量级、便捷的应用形式&#xff0c;已经成为许多用户和开发者的首选。本文将深入探讨微信小程序的技术架构&#xff0c;从前端视角到后台支撑&#xff0c;为读者全面解析这一新兴应用形式的奥秘。 #### 一、微信小程序的…

opencv中凸包运算函数convexHull()的使用

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 1.功能描述 该函数cv::convexHull用于寻找一组二维点集的凸包&#xff0c;采用的是Sklansky算法[242]&#xff0c;当前实现中具有O(N logN)的时间复杂度。 1…

2024: 有效使用OKR的10个技巧

2023年是许多前所未有的一年。从真正意义上讲&#xff0c;这一年让我们为不可预测的事情做好了准备&#xff0c;也为不确定的事情提供了训练。在我们身边发生了这么多事情&#xff0c;而下一步的行动却依然不甚明朗的情况下&#xff0c;领导者们更应该开始制定战略&#xff0c;…

Linux服务器挖矿病毒处理

文章目录 Linux服务器挖矿病毒处理1.中毒表现2.解决办法2.1 断网并修改root密码2.2 找出隐藏的挖矿进程2.3 关闭病毒启动服务2.4 杀掉挖矿进程 3. 防止黑客再次入侵3.1 查找异常IP3.2 封禁异常IP3.3 查看是否有陌生公钥 补充知识参考 Linux服务器挖矿病毒处理 情况说明&#x…

FuTalk设计周刊-Vol.033

&#x1f525;AI漫谈 热点捕手 1、Stable Video Diffusion —— Stable Diffusion 推出的 AI 生成视频模型 Stable Video Diffusion 也是开源的&#xff0c;可以免费下载部署。支持文本/图片生成视频&#xff0c;最高支持 576*1024 分辨率 25 帧。 链接https://huggingface.…

DV、OV通配符SSL证书有什么区别

通配符SSL证书是经常提及的一种SSL证书类型&#xff0c;也被称为泛域名SSL证书。通配符证书在SSL证书当中是比较特殊的&#xff0c;它具有保护主域名及其下一级所有子域名的功能&#xff0c;非常适合子域名多的域名网站&#xff0c;能够有效的节省成本&#xff0c;并降低证书管…

申办乙级资信证书,河南工程咨询单位流程详解

河南工程咨询单位申办乙级资信证书的流程详解如下&#xff1a; 一、前期准备阶段 研读政策文件&#xff1a; 研读《工程咨询行业管理办法》&#xff08;国家发展改革委2017年第9号令&#xff09;以及《国家发展改革委关于印发<工程咨询单位资信评价标准>的通知》&#x…

最近,GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价,包括版本间的对比分析、GPT-4o的技术能力以及个人整体感受等

GPT-4o是一款引人瞩目的人工智能技术&#xff0c;它在之前版本的基础上取得了长足的进步。本文将对GPT-4o进行评价&#xff0c;包括版本间的对比分析、GPT-4o的技术能力以及个人整体感受等。 首先&#xff0c;我们来进行GPT-4o与之前版本的对比分析。GPT-4o相较于GPT-3和GPT-2…

调建堆的时间复杂度的计算与topK问题

建堆复杂度的计算 向下调整建堆 第一层有2^0个节点&#xff0c;最坏向下调整h-1次&#xff0c;第二层有2^1个节点&#xff0c;最坏向下调整h-2次&#xff0c;以此类推&#xff0c;将每一层所有节点最坏情况需要调整的次数相加&#xff0c;就能得到一个式子&#xff1a; 最后到…

FanySkill源文件修改,快捷键以及新增任务栏选项

FanySkill源文件修改&#xff0c;快捷键以及新增任务栏选项 一、文件下载二、快捷键设置三、任务栏四、本人配置 一、文件下载 自行去PCB联盟网下载&#xff0c;因为那边下载要联盟币&#xff0c;我不清楚我免费提供会不会给我带来没必要的损失&#xff0c;敬请谅解。 要下载的…