【C++】37.为什么要使用Lambda表达式

Lambda表达式是C++中的一种匿名函数形式,主要优点在于简化代码和作为回调函数参数。它允许在函数体内直接定义,减少额外的函数声明步骤。Lambda可以有指定的返回类型或由编译器推断,并且能捕获外部变量,使得它们在多线程场景下作为参数传递,例如在`std::thread`中。此外,Lambda表达式常用于函数式编程和高阶函数中,提供一种灵活的代码组织方式。
摘要由CSDN通过智能技术生成
为什么要使用Lambda表达式?
  • 1.可以在某个函数的函数体内直接定义,省了一步在外面定义函数的操作;
  • 2.作为函数的参数,类似(可能就是)回调函数的作用。
1.可以在某个函数的函数体内直接定义,省了一步在外面定义函数的操作

Lambda表达式就是匿名函数,他可以用在某个函数内部,使用lambda表达式定义一个匿名函数,就像是一个正常的c++语句一样,不需要额外定义一个函数。
一般情况下,这个lambda表达式的函数体比较短小,不要写的太复杂;另外,lambda表达式函数体内也可以调用某个函数,他和正常函数没什么两样,正常函数怎么用,lambda表达式就能怎么用。
如:

int func(){
	auto lambda_func = [](int x)-> int { return x*x; }; 
	int ret=lambda_func(10);  //调用匿名函数
	return ret;
}

-> int是指定函数返回值类型为int,某些情况下可以省略,如,当返回值为void或者函数体中只有一处 return 的地方(此时编译器可以自动推断出返回值类型)。

2.作为函数的参数,类似回调函数的作用

当一个函数func的参数是lambda表达式时,基本上就能确定,该函数func的这个参数是一个回调函数的地址,在该函数内部会把这个lambda表达式赋值给这个形参,在内部进行调用。对于回调函数的知识如果不懂,可以参考函数指针和回调函数的博客原文链接:回调函数、注册回调函数,其实就是晚绑定。

auto lambda_func = [](int x) { return x*x; };
typedef void (*func_ptr)(int);

int func(func_ptr){
	func_ptr= lambda_func;
	func_ptr(10); // calls the lambda
}

类似的,还可以在多线程时使用。如:

std::thread([this](){Process();});

上面这句话把一个复杂的函数Process()放到lambda表达式的函数体内部,就可以将这个lambda表达式作为参数传入std::thread

另外,也可以像下面直接这么用,但是下面单纯为了展示这用法而这么用,没什么意思:

auto lambda_func = [](int x) {return x*x;};
void (*func_ptr)(int) = lambda_func;
func_ptr(10); // calls the lambda
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值