[modern c++] 函数式编程与 std::ref

news2024/11/17 20:27:43

参考:

std::ref, std::cref - cppreference.comicon-default.png?t=N7T8https://en.cppreference.com/w/cpp/utility/functional/ref

正文:

如果不涉及函数式编程,那么基本上不需要使用到 std::ref , 这个功能式是用来解决函数式编程时入参只能进行值传递的问题的,不过如果使用指针则同样不需要 std::ref,如果不用指针则大概率会需要。

#include <functional>
#include <iostream>
 
void f(int& n1, int& n2, const int& n3)
{
    std::cout << "In function: " << n1 << ' ' << n2 << ' ' << n3 << '\n';
    ++n1; // increments the copy of n1 stored in the function object
    ++n2; // increments the main()'s n2
    // ++n3; // compile error
}
 
int main()
{
    int n1 = 1, n2 = 2, n3 = 3;
/*
std::bind 的第二个参数以后都是传递给第一个参数的入参,这里的n1就是传值,那么f函数里的第一个参数就是值传递,第二个参数使用了 std::ref 包裹,那么就进行了引用传递,那么在 f里面对第二个参数的修改会影响外部函数的局部变量n2
*/
    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';
}

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

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

相关文章

ai语音机器人OKCC的空号检测

一、空号检测模块介绍 空号检测的原理&#xff1a;空号检测是利用现代通信技术和互联网技术结合而成&#xff0c;采用批量拨电话号码的方式&#xff0c;过滤空号、停机、无效号码。业内又称空号筛选、空号过滤。空号检测技术的成果是去除号码中的无效号码&#xff0c;包括…

代理IP端口是什么意思呢?

今天&#xff0c;咱们来聊聊一个小众但很有料的话题——代理IP端口&#xff0c;它可是你纵横互联网世界的好搭子哦&#xff01; 首先&#xff0c;我们得先弄明白&#xff0c;代理IP端口是个啥? 代理IP端口就像是通往网络世界的门票&#xff0c;是你和代理服务器之间的桥梁。…

“解锁1688商品详情接口:提升电商转化率的秘密武器!“

1688商品详情接口&#xff08;又称详情页API&#xff09;是一种供卖家使用的接口&#xff0c;可以让卖家通过该接口维护商品的详细信息&#xff0c;包括商品价格、图片、属性等等。 通过使用该接口&#xff0c;卖家可以在商品详情页中提供更加详尽、直观的商品描述&#xff0c…

总线带宽计算公式

原文连接&#xff1a;总线带宽计算公式&#xff08;解析&#xff09;-

Linux Shell 实现一键部署hfish

hfish前言 HFish是一款社区型免费蜜罐&#xff0c;侧重企业安全场景&#xff0c;从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发&#xff0c;为用户提供可独立操作且实用的功能&#xff0c;通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷感知和威胁情报领域的能…

PromptScript:轻量级 DSL 脚本,加速多样化的 LLM 测试与验证

TL&#xff1b;DR 版本 PromptScript 是一个轻量级的 Prompt 调试用的 DSL &#xff08;Yaml&#xff09;脚本&#xff0c;以用于快速使用、构建 Prompt。 PromptScript 文档&#xff1a;https://framework.unitmesh.cc/prompt-script Why PromptScript &#xff1f; 几个月前&…

JAVA设计模式-装饰者模式

一.概念 装饰器模式(Decorator Pattern)&#xff0c;动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰器模式比生成子类更灵活。 —-《大话设计模式》 允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种类型的设计模式属…

多列等高实现

预期效果 多列等高,左右两列高度自适应且一样,分别设置不同背景色效果预览: 分别由6种方法实现 1、使用padding + margin + overflow 实现多列等高效果,具有良好的兼容性; 2、border实现多列等高,左边框宽度为200px,左列浮动,伪元素清除浮动; 3、父元素线性渐变背景色…

Mac热门软件推荐Paste mac 中文激活版 剪切板工具

Paste for Mac是一款运行在Mac OS平台上的剪切板小工具。它拥有华丽的界面效果&#xff0c;并且每一条记录可显示&#xff08;预览&#xff09;文本、图片等记录的完整内容。此外&#xff0c;Paste for Mac可以记录最近指定条数的剪切板信息&#xff0c;方便用户随时调用&#…

L15D1 设备分类、设备号申请和注销

一、Linux设备分类 &#xff08;一&#xff09;linux的文件种类&#xff1a; -&#xff1a;普通文件&#xff1a;文件IOd&#xff1a;目录文件p&#xff1a;管道文件s&#xff1a;本地socket文件&#xff1a;网络编程l&#xff1a;链接文件c&#xff1a;字符设备b&#xff1a…

18__call__函数的调用

目录 把对象当成函数一样调用 吼吼~补充一个小的知识点哦~就是括号里的参数&#xff01; 具体的应用场景 原先一个实例化对象&#xff0c;并不会被调用&#xff0c;但是可以引入call class Person:pass pPerson() p() 这个时候引入__call__ 把对象当成函数一样调用 class…

PLC电梯控制系统

目录 PLC电梯控制系统 1电梯简介 1.1电梯的基本分类 1.1.1按用途分类 1.1.2 按驱动系统分类 1.2 电梯的型号 1.3电梯的主要参数及规格尺寸 1.4电梯控制技术 1.5常用交流调速电梯的特点 1.6电梯的工作原理 2 PLC可编程序控制器 2.1 PLC的起源与发展 2.2 PLC控制系统…

视频监控系统/安防视频平台EasyCVR广场视频细节优化

安防视频监控系统/视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频汇聚平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;可实现视频监控直播、视频轮播、…

二叉搜索树--查询节点-力扣 700 题

例题细节讲过(二叉搜索树的基础操作-CSDN博客)&#xff0c;下面给出递归实现 public TreeNode searchBST(TreeNode node, int val) {if(node null) {return null;}if(val < node.val) {return searchBST(node.left, val);} else if(node.val < val) {return searchBST(…

Iptabels的相关描述理解防火墙的必读文章

Iptabels是与Linux内核集成的包过滤防火墙系统&#xff0c;几乎所有的linux发行版本都会包含Iptables的功能。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器&#xff0c; 则Iptables有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。…

MATLAB笔记:GUI中的回调函数之间的数据传输

文章目录 效果代码 效果 plot 是画图 hold是hold on show是显示 clear是清除坐标轴 代码 function varargout untitled(varargin) % UNTITLED MATLAB code for untitled.fig % UNTITLED, by itself, creates a new UNTITLED or raises the existing % singleton*.…

Nacos(替代Eureka)注册中心

Nacos初步学习 Nacos 是一个开源的服务注册和配置中心&#xff0c;它允许您注册、注销和发现服务实例&#xff0c;并提供了配置管理的功能。下面是Nacos的最基础用法&#xff1a; 1. 服务注册和发现&#xff1a; 首先&#xff0c;您需要将您的应用程序或服务注册到Nacos中。…

抖音商品详情数据接口,抖音商品详情API接口

抖音商品详情API接口获取数据&#xff0c;接口对接可获取到商品标题&#xff0c;商品价格&#xff0c;商品优惠价&#xff0c;优惠券信息&#xff0c;店铺昵称&#xff0c;sku信息&#xff0c;sku主图&#xff0c;视频链接&#xff0c;详情主图&#xff0c;库存&#xff0c;数量…

路由高级特性

项目拓扑与项目需求 项目需求 某企业网络使用ospf和isis作为IGP协议实现内部网络的互联互通&#xff0c;区域规划和IP规划如图所示&#xff0c;现在要求实现如下需求&#xff1a; LSW1和AR1使用vlan10互联&#xff0c;与AR2使用vlan20互联&#xff0c;LSW1与LSW2、3、4之间使…

MySQL实践——MySQL权限

1. 权限概述 MySQL的mysql 系统库提供了user、db、tables_priv、columns_priv、procs_priv、proxies_priv几个表&#xff0c;用于存放不同权限范围的用户账号相关数据&#xff0c;这些表共同组成了MySQL的访问权限控制系统。 MySQL访问权限控制系统的主要功能是对从给定主机连…