1.使用bind构造适配器操作,这里可以使用默认的参数
#include<iostream> #include<functional> using namespace std; using namespace std::placeholders; int add(int a, int b, int c) { return a + b + c; } int main1() { auto fun = bind(add, 10, 12, _1); //适配器模式 cout << fun(1100) << endl; cin.get(); }
2.适配lamda函数
int main2() { auto fun = bind([](int a, int b)->int {return a + b;}, 100, _1); cout << fun(123) << endl; cin.get(); }
3.适配结构体的operator函数
struct MyStruct { int operator()(int a, int b) { cout << "a=" << a << "b=" << endl; return a + b; } }; int main() { MyStruct my1; //cout << my1(1, 2) << endl; auto fun = bind(my1, 100, _1); //绑定, 从左向右 cout << fun(123) << endl; cin.get(); }