C++基础-绑定lamda和operator函数

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();
}
原文地址:https://www.cnblogs.com/my-love-is-python/p/15037633.html