C++ std::bind 快速掌握

描述

使用此函数可以预先将部分要传入的函数参数绑定到函数中,后续调用只需要传剩下的即可。

// 函数原型
template< class F, class... Args >
constexpr /*unspecified*/ bind( F&& f, Args&&... args );

输入为函数f和任意个函数参数args。返回值为未定类型的函数对象。

通常需要结合std::placeholder,用于占位尚未绑定的参数。

示例

#include <iostream>
#include <functional>

void f(int a1, int a2, int a3){
	std::cout << a1 << ' ' << a2 << ' ' << a3 << std::endl;
}

int main()
{
	// 将函数f和后面的三个参数绑定,其中前两个参数使用placeholder,后续调用再实际传
	auto f1 = std::bind(f, std::placeholders::_2, std::placeholders::_1, 10);
	
	// 此时传入的参数依次对应于placeholders::_1, _2, ……
	// 结合上方bind时指定的顺序,相当于执行 f(6, 5, 10)
	f1(5, 6);
}

// out: 6 5 10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值