C++ bind

xiaoxiao2021-02-27  247

前几天用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 [,…])  // 非自动推断

转载请注明原文地址: https://www.6miu.com/read-8788.html

最新回复(0)