C++11 bind的初步了解
来源:互联网 发布:java itext word转pdf 编辑:程序博客网 时间:2024/05/12 08:44
bind是一个C++11的一个标准库函数,它的定义在functional中。可以将bind看作一个通用的函数适配器,他接受一个可调用的对象,生成一个新的可调用对象来‘适应对象参数列表。
调用bind的一般形式为:
auto newCallable = bind(callale,arg_list);
其中,newCallable本身是一个可调用的对象,arg_list是一个逗号分割的参数列表,对应给定的callable的参数。即,当我们调用newCallalbe的时候,会调用callable,并传递给它arg_list中的参数。
而arg_list中的参数可能保护形式如_n的名字,其中n是一个整数。这些参数是“占位符“,表示newCallable,他们占据了传递给newCallable的参数的位置。数值n表示生成的可调用对象中的参数位置:_1为newCallable的第一个参数,_2为第二个以此类推。
说这么多可能你获取有些迷惑,不急我们来看看几段简单的代码演示,然后再返回来看看说明,一切你就懂了。
#include <iostream>using namespace std;#include <functional>//使用bind引用的头文件using namespace placeholders;//使用bind命名空间void fun(int a=0,int b=0,int c=0,int d=0,int e=0){ cout<<"a="<<a<<endl <<"b="<<b<<endl <<"c="<<c<<endl <<"d="<<d<<endl <<"e="<<e<<endl <<"a+b+c+d+e="<<a+b+c+d+e<<endl;}void main(void){ int a=1, b=2, c=3, d=4, e=5; auto g2=bind(fun,a,b,_1,d,_2); //bind的第一个参数为要绑定的函数,后面的参数个数为被绑定函数本身参数的个数 g2(6,c,e); //g2的映射关系为fun(a,b,6,d,c);由于bind参数_1,和_2的限定,g2里面的e没有得到映射。 /* 输出结果: a=1 b=2 c=6 d=4 e=3 a+b+c+d+e=16 */ g2(c,e,6,7); //g2的映射关系为fun(a,b,c,d,e);由于bind参数_1,和_2的限定,g2里面的6,7没有得到映射。 /* 输出结果: a=1 b=2 c=3 d=4 e=5 a+b+c+d+e=15 */ auto g1=bind(fun,a,b,_2,d,_1); g1(c,e); //将bind里的_1和_2对调,g1的映射为fun(a,b,e,d,c); /* 输出结果: a=1 b=2 c=5 d=4 e=3 a+b+c+d+e=15 */ auto lab=[](char i,char k) { cout<<"i="<<i<<endl <<"k="<<k<<endl; }; auto g3=bind(lab,_5,_3); g3('a','b','c','d','e'); /* 输出结果: i=e k=c */ auto g4=bind(lab,_2,_4); g4('a','b','c','d','e'); /* 输出结果: i=b k=d */ system("pause");}
0 0
- C++11 bind的初步了解
- 初步对C语言的了解
- C位域的初步了解
- 对c语言的初步了解
- C++Boost 初步了解
- c extern初步了解
- 【初步了解】C#-Socket
- C指针初步了解
- C语言编程初步了解
- c语言编程初步了解
- Jawe的初步了解
- Jawe的初步了解
- Router 的初步了解
- 指针的初步了解
- Tornado的初步了解
- Cookie的初步了解
- UML的初步了解
- C#的初步了解
- vim设置python编辑环境
- 啊!口水文
- Java ClassLoader机制分析 -- Tomcat commloader 例说
- 玩转PHP(一)---php中处理汉字字符串长度:strlen和mb_strlen
- Hadoop 2.6.0 伪分布式模式环境搭建
- C++11 bind的初步了解
- MongoDB 学习笔记一
- LeetCode--3Sum Closest
- 开窗函数 Row_Number partition by 分类排序
- c++超基础:多态——上、虚函数
- 二叉树非递归遍历之简单实现
- GitHub上README写法暨markdown语法解读
- android studio环境配置以及出现NO jvm installation found解决方案。
- Genymotion android模拟工具