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();
}

 

posted on 2021-07-20 23:38  python我的最爱  阅读(68)  评论(0编辑  收藏  举报