最简单的C++ std::bind使用方法与案例

std::bind 是一个函数模板, 它就像一个函数适配器,可以把一个原本接收N个参数的函数fn,
通过绑定一些参数,返回一个接收M个参数的函数ret,同时还可以实现参数顺序调整等操作。
小例子如下:

#include <iostream>
#include <functional>

void func(int a, int b, int c) {
	std::cout << "a=" << a << std::endl;
	std::cout << "b=" << b << std::endl;
	std::cout << "c=" << c << std::endl;
	std::cout << std::endl;
}

int main() {
	//正常函数调用
	func(1,2,3);

	//使用bind绑定func,并且给默认值4,5,6
	//使用方法func(int a,int b,int c) == func()
	//绑定到auto f 此时函数f将可以不用形参调用,达到缺省参数效果
	auto f = std::bind(func,4,5,6);
	f();

	//使用 placeholders::_1 占位符可以改变函数的形参顺序,还可以改变函数的形参数量
	//使用方法func(int x,int y,int z)  == func(int)
	//注意:缺省位置参数必须要填写
	auto f1 = std::bind(func, std::placeholders::_1, 5, 6);
	f1(100);
	auto f2 = std::bind(func, 4, std::placeholders::_2, 6);
	f2(0, 100);
	auto f3 = std::bind(func, 4, 5, std::placeholders::_3);
	f3(0, 0, 100);

	//使用 function类也可以保存 bind绑定的函数,
	//但是要注意参数数量和 bind绑定的参数数量
	std::function<void()> p = std::bind(func, 7, 8, 9);
	p();
	std::function<void(int, int)> p1 = std::bind(func, 7, std::placeholders::_2, 9);
	p1(0, 100);

	//使用 bind函数改变函数的参数顺序
	auto f4 = std::bind(func, std::placeholders::_3, std::placeholders::_2, std::placeholders::_1);
	f4(1, 2, 3);

	std::cin.get();
	return 0;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值