C++ bind

来源:互联网 发布:个人商城源码 编辑:程序博客网 时间:2024/05/21 09:32

前几天用lambda写了一个程序  http://blog.csdn.net/ink_cherry/article/details/74129946

bind是用来绑定函数调用参数 

这个bind 的用途,是延时执行函数    支持占位符操作



这个bind 的用途,是延时执行函数    支持占位符操作

一个简单的bind 例子

#include<iostream>#include<functional>int substract(int a, int b){return b - a;}int main(){auto bindsbstact = std::bind(substract, std::placeholders::_2,std::placeholders::_1);std::cout << bindsbstact(5, 10);        //等价于执行substract(10,5)auto bindsbstact2 = std::bind(substract, 10, std::placeholders::_1);std::cout << bindsbstact2(5);           //等价于执行substract(10,5)} 

打印-5 -5

占位符就是 参数位置 _1 _2   _x代表原函数的第x参数 

 

函数使用形式
bind(f [,t][,…])                                                                                              // 自动推断
bind<返回值类型>(f [,t][,…])                                                                                  // 非自动推断
bind<返回值类型, 函数类型, 绑定器传入参数类型>(f ,[…])                                                        // 非自动推断
bind<返回值类型, 函数参数类型, 绑定器传入参数类型>(f [,…])                                                    // 非自动推断
bind<返回值类型, 类, 绑定器传入参数类型(即对应的类实例)>(T::*f ,t [,…])                                     // 非自动推断
bind<返回值类型, 类, 函数参数类型, 绑定器传入参数类型(即对应的类实例+函数传入的参数), >(T::*f ,t [,…]) // 非自动推断


一个简单的bind 例子

#include<iostream>#include<functional>int substract(int a, int b){return b - a;}int main(){auto bindsbstact = std::bind(substract, std::placeholders::_2,std::placeholders::_1);std::cout << bindsbstact(5, 10);        //等价于执行substract(10,5)auto bindsbstact2 = std::bind(substract, 10, std::placeholders::_1);std::cout << bindsbstact2(5);           //等价于执行substract(10,5)} 

打印-5 -5

占位符就是 参数位置 _1 _2   _x代表原函数的第x参数 

 

函数使用形式
bind(f [,t][,…])                                                                                              // 自动推断
bind<返回值类型>(f [,t][,…])                                                                                  // 非自动推断
bind<返回值类型, 函数类型, 绑定器传入参数类型>(f ,[…])                                                        // 非自动推断
bind<返回值类型, 函数参数类型, 绑定器传入参数类型>(f [,…])                                                    // 非自动推断
bind<返回值类型, 类, 绑定器传入参数类型(即对应的类实例)>(T::*f ,t [,…])                                     // 非自动推断
bind<返回值类型, 类, 函数参数类型, 绑定器传入参数类型(即对应的类实例+函数传入的参数), >(T::*f ,t [,…]) // 非自动推断

原创粉丝点击