C++ bind函数
bind()是一个函数适配器,返回一个可调用对象,他可以将一个函数的参数列表做魔改。
设置默认参数
using namespace std::placeholders;
void f(int a, int b)
{
cout << a << ' ' << b;
}
int main()
{
int a = 0;
auto new_f = bind(f, _1, 3);
new_f(1);//结果输出1 3
return 0;
}
其中的_1是一个参数占位符,_n就代表占住函数new_f()的第n个参数。_n定义在std::placeholders命名空间内,通过using声明来使用。
调整参数顺序
using namespace std::placeholders;
void ff(int a, int b)
{
cout << a << ' ' << b;
}
int main()
{
int a = 0;
auto f = bind(ff, _2, _1);
f(1, 3);//结果输出3 1
return 0;
}
绑定引用参数
默认情况,bind那些不是占位符的参数被拷贝到bind返回的可调用对象中。如果希望传递引用,可用ref()函数传递。
using namespace std::placeholders;
void f(int& a)
{
++a;
}
int main()
{
int a = 0;
auto new_f = bind(f, ref(a));
new_f();
cout << a; //结果为1
return 0;
}
C++ bind函数的更多相关文章
- (十一)socket、connect、bind函数详解
一.socket函数 1.头文件: #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> 2.函数原型: ...
- Javascript中call、apply、bind函数
javascript在函数创建的时候除了自己定义的参数外还会自动新增this和arguments两个参数 javascript中函数也是对象,call.apply.bind函数就是函数中的三个函数,这 ...
- angular.bind() 函数
angular.bind bind 函数有三个参数, 参一:是一个对象 参二:是一个 function 参三:是用来给参二传参数的,可写可不写,看你心情 参数也可以在调用函数的时候传,也可以当做第三个 ...
- jQuery.bind() 函数详解
bind()函数用于为每个匹配元素的一个或多个事件绑定事件处理函数. 此外,你还可以额外传递给事件处理函数一些所需的数据. 执行bind()时,事件处理函数会绑定到每个匹配元素上.因此你使用bind( ...
- call,apply,bind函数
一.call函数 a.call(b); 简单的理解:把a对象的方法应用到b对象上(a里如果有this,会指向b) call()的用法:用在函数上面 var Dog=function(){ this.n ...
- C++ Primer : 第十章 : 泛型算法 之 lambda表达式和bind函数
一.lambda表达式 lambda表达式原型: [capture list] (parameter list) -> retrue type { function body } 一个lambd ...
- 模拟实现兼容低版本IE浏览器的原生bind()函数功能
模拟实现兼容低版本IE浏览器的原生bind()函数功能: 代码如下: if(!Function.prototype.bind){ Function.prototype.bind=function( ...
- bind函数
bind函数把一个本地协议地址赋予一个套接字 对于网际协议,协议地址是32位的IPv4地址或128位的IPv6与16位的TCP或UDP端口号的组合 int bind ( int sockfd, con ...
- js 中的bind函数
bind是Function.prototype中内置函数 作用是指定函数作用域 代码参考 http://blog.csdn.net/load_life/article/details/7200381 ...
- 《Javascript高级程序设计》读书笔记之bind函数详解
为什么需要bind var name = "The Window"; var object = { name: "My Object", getNameFunc ...
随机推荐
- 在K8s中,提供的DNS组件是什么?有什么特性?
在Kubernetes (K8s)集群中,用于内部DNS服务的组件已经从早期的kube-dns过渡到了coredns. kube-dns(已弃用): 在Kubernetes 1.10版本之前,kube ...
- Dijkstra实现单源最短路
Dijkstra算法求单源最短路 Dijkstra算法应用于求一个给定图的单个源点到其他各顶点的最短路.其中应用Dijkstra算法的图应满足如下条件 图中没有负权边 有向或者无向图都可以 图中若有自 ...
- Delphi2010中TResourceStream流使用
Resource可以是任意文件(图像.声音.office都可以),直接打包到编译的exe文件中,调用也非常方便 打开一个新的或已有的delphi工程 1.先在 Project->resource ...
- 零基础入门Vue之拘元遣将——其他常用指令&自定义指令
回首 在 零基础入门Vue之梦开始的地方--插值语法 我记录了v-bind.v-on.v-model的学习 在 零基础入门Vue之To be or not to be--条件渲染 我记录了v-if.v ...
- HASHTEAM香山杯2023WP
目录 前言 misc 签到题 web PHP_unserialize_pro Re URL从哪儿来 hello python pwn Move pwthon 附上c-python调试方法 crypto ...
- Python实现冒泡排序、选择排序、插入排序
排序与搜索 排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法. 排序算法的稳定性 稳定性:稳定排序算法会让原本有相等键值的纪录维持相对次序.也就是如 ...
- NC13224 送外卖
题目链接 题目 题目描述 n 个小区排成一列,编号为从 0 到 n-1 .一开始,美团外卖员在第0号小区,目标为位于第 n-1 个小区的配送站. 给定两个整数数列 a[0]~a[n-1] 和 b[0] ...
- NC14699 队伍配置
题目链接 题目 题目描述 萌学姐在玩大型手游<futa go>,他现在准备进入作战环节,所以他准备安排自己的队伍. 队伍配置里,可供玩家选择的作战人物被称作"从者",玩 ...
- 收集 VSCode 常用快捷键
快速复制行 Shift + Alt + ↑/↓ 都是往下复制行,区别是:按↓复制时光标会跟着向下移动,按↑复制时光标不移动. 向上/向下移动一行 Alt + ↑/↓ 删除整行 Ctrl + Shift ...
- IPNS和DNSLink的使用说明
IPNS和DNSLink的使用说明 IPNS说明 IPNS全称InterPlanetary Name System,就是IPFS下的一个名称解析系统,类似于互联网的DNS,但是与DNS不同的是,IPN ...