什么是bind函数,为什么要使用bind函数
2015-11-09 22:50
399 查看
这是接着上一篇关于lambda表达式写的。如果要理解bind函数最好和lambda表达式一起理解,因为他们要解决相同的问题。也就是要解决回调函数的参数适配问题。所以如果不太了解回调函数和lambda表达式的话请戳这里和这里。理解了回调函数和lambda表达式之后,理解bind函数就很容易了。bind函数的功能就是把多余的参数用实参代替,返回一个参数数目更少的新函数,以便新的函数能够作为回调函数被另一个函数调用。bind的用法如下:
其中callable就是原函数,arg_list就是callable的参数列表,不同参数之间用逗号隔开。arg_list允许包含占位符:_1, _2, _3等。占位符所处位置的参数就是新函数的参数。_1表示其所处位置的参数是新函数的第一个参数,_2表示第二个参数。例如
bind函数还有一个功能就是重排参数,例如
水平有限,如有不妥,敬请拍砖。
参考文献
C++ primer
auto newCallable = bind(callable, arg_list);
其中callable就是原函数,arg_list就是callable的参数列表,不同参数之间用逗号隔开。arg_list允许包含占位符:_1, _2, _3等。占位符所处位置的参数就是新函数的参数。_1表示其所处位置的参数是新函数的第一个参数,_2表示第二个参数。例如
bool compare(int i, double j); auto newFunc =bind(compare, 4, _1);这里新的函数就是只有一个double型的参数,返回值为bool型。
bind函数还有一个功能就是重排参数,例如
auto newFunc=bind(compare, _2, _1);这样就相当于重新定义了一个函数,它的函数体和compare一模一样,但是参数列表颠倒了一下,double j在前,int i在后。所以在调用的时候就要先传入double型再传入int型参数。否则出错。
水平有限,如有不妥,敬请拍砖。
参考文献
C++ primer
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- Jquery绑定事件(bind和live的区别介绍)
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- jQuery bind事件使用详解
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解