QT-Lambda表达式

Lambda 表达式是 C++11 引入的一种匿名函数的方式,它允许你在需要函数的地方内联地定义函数,而无需单独命名函数

Lambda 表达式的基本语法如下:

[capture clause](parameters) -> return_type {
 // 函数体
// 可以使用捕获列表中的变量
return expression; // 可选的返回语句
}

捕获列表(Capture clause):用于捕获外部变量,在 Lambda 表达式中可以访问这些变量。捕 获列表可以为空,也可以包含变量列表 [var1, var2, ...]。

参数列表(Parameters):与普通函数的参数列表类似,可以为空或包含参数列表 param2, ...)。

 返回类型(Return type):Lambda 表达式可以自动推断返回类型auto,也可以显式指定返回类 型- > return_type。如果函数体只有一条返回语句,可以省略返回类型。

函数体(Body):Lambda 表达式的函数体,包含需要执行的代码。

#include <iostream>
 int main() {
 // 定义一个简单的 Lambda 表达式进行加法
auto add = [](int a, int b) {
 return a + b;
 };
 // 使用 Lambda 表达式计算两个数的和
int sum = add(10, 20);
 std::cout << "Sum is: " << sum << std::endl;
 return 0;
}

示例:使用匿名 Lambda 函数来返回两个数中的较大数

#include <iostream>
 // 函数,接受两个整数和一个比较的 lambda 函数
int getMax(int a, int b, bool(*compare)(int, int)) {
 if (compare(a, b)) {
 return a;
 } else {
 return b;
 }
}
 int main() {
 int x = 10;
 int y = 20;
 // 直接在函数调用中定义匿名 lambda 函数
int max = getMax(x, y, [](int a, int b) -> bool {
 return a > b;
 });
 }
 std::cout << "The larger number is: " << max << std::endl;
 return 0;
}

getMax 函数中:接受两个整数 a 和 b,以及一个比较函数 的指针,它接受两个整数并返回一个布尔值。

main函数中:我们调用getmax,并直接在调用点定义了一个匿名的 lambda 函数。这个 lambda 函数接受两个整数并返回一个表示第一个整数是否大于第二个整数的布尔值。

使用带参数捕获的 Lambda 表达式

[=] 捕获列表,这表示它按值捕获所有外部变量。是在 Lambda 定义时x,y的值的拷贝。

[&] 捕获列表,这表示它按引用捕获所有外部变量。这表示它按引用捕获所有外部变量。可以修改 x 和 y 的原始值。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值