boost bind

占位符_1,_2,_3,_4_5...,_9
bind括号里面出现的占位符由后面的补充,比如
bind(g, 11, _2, _1)(6,7);
第一个参数6补充_1, 第二个参数7补充_2,所以相当于g(11,7,6)

function是函数对象的‘容器’,可以和bind配合使用,存储bind表达式的结果
#include <stdio.h>
#include <iostream>
#include <boost/bind.hpp>
#include <boost/function.hpp>

using  namespace  boost;

void  g(int  a, int  b, int  c)
{

    printf("=g(%d,%d,%d)\n",a,b,c);
}

int  main()
{

    bind(g, 10, 20, 30)();//=g(10,20,30);
    bind(g, _1, 20, 30)(6);//=g(6,20,30);
    bind(g, 10, 20, _1)(6);//=g(10,20,6);
    bind(g, 10, _2, _1)(6,7);//=g(10,7,6);
    bind(g, _1, _2, _3)(6,7,8);//=g(6,7,8);
    bind(g, _3, _1, _2)(6,7,8);//=g(8,6,7);
    bind(g, _4, _4, _4)(6,7,8,9);//=g(9,9,9);

    function<void (int , int )> sum = bind(g, _2, _2, _1);
    sum(10, 20);//=g(20,20,10);

    function<void (int, int, int)> sum0 = bind(g, _2, _2, _1);
    sum0(10,20,30);//=g(20,20,10);

    function<void (int, int, int)> sum2 = bind(g, _2, _3, _1);
    sum2(10,20,30);//=g(20,30,10);

    return  0 ;
};


=g(10,20,30)
=g(6,20,30)
=g(10,20,6)
=g(10,7,6)
=g(6,7,8)
=g(8,6,7)
=g(9,9,9)

=g(20,20,10)
=g(20,20,10)
=g(20,30,10)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值