C++11 占位符placeholders和函数bind用法

#include <iostream>
#include <string>
#include <functional>
using namespace std;
using namespace std::placeholders;
 
void test(int i, double d, const string &s)
{
    cout << "i= " << i << " d= " << d <<" s= " << s << endl;
}
int test1(int i, double d, const string &s)
{
    cout << "i= " << i << " d= " << d <<" s= " << s << endl;
    return i;
}
 
int main(int argc, const char *argv[])
{
    function<void( void )> fp;
    string s = "foo";
    int a = 3;
    double b = 6.7;
    fp = bind(&test, a, b, s);
    fp();
 
    function <void (int , const string&)> fp1;
    double b2 = 4.6;
    fp1 = bind(test, _1, b2, _2);
    fp1(4, "kity");
 
    function <int (int , const string&) > fp2;
    fp2 = bind<int>(test1, _1, b2, _2);
    int  y = fp2(4, "kity");
    cout << y << endl;
 
    auto fn = bind(test, 10, 23.3, "heko");//不用function指定函数参数,
    fn();
 
    auto ff = bind(test, _1, _3, _2);//bind中的i参数类型与test的_j的参数类型对应
    ff(12, "ppp", 12.5);
 
    class A
    {
        public:
            void print(int a, double x)
            {
                cout << a << " " << x << endl;
            }
    };
    A a3;
    auto fclass= bind(&A::print, &a3, 11, 7.7);
    fclass();
    return 0;
}


参照 https://blog.csdn.net/aa838260772/article/details/39828207

 

转载于:https://www.cnblogs.com/xzlq/p/9505128.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值