Lambda表达式是C++11中引入的一个新特性,它允许我们在代码中定义一个匿名的函数对象。Lambda表达式可以在需要函数对象的地方替代传统的函数对象或函数指针,从而使代码更加简洁和易读。
Lambda表达式的语法如下:
[capture list](parameters) -> return_type {
// lambda body
}
其中,
capture list
:用来捕获外部变量,可以是值捕获、引用捕获或者混合捕获。parameters
:参数列表,与普通函数一样。return_type
:返回类型,可以是显式指定,也可以根据lambda体自动推导。lambda body
:lambda表达式的具体实现代码。下面是一个简单的示例,演示了如何使用lambda表达式来计算两个数的和:
#include <iostream>
int main() {
int a = 5, b = 3;
auto sum = [](int x, int y) { return x + y; };
std::cout << "Sum of " << a << " and " << b << " is " << sum(a, b) << std::endl;
return 0;
}
在这个例子中,sum
是一个lambda表达式,它以两个整数作为参数,并返回它们的和。我们使用auto
关键字来推导lambda表达式的类型,也可以显式指定类型。
Lambda表达式可以捕获外部变量,例如:
#include <iostream>
int main() {
int factor = 2;
auto multiply = [factor](int x) { return x * factor; };
std::cout << "Multiply 5 by " << factor << " is " << multiply(5) << std::endl;
return 0;
}
在这个例子中,multiply
是一个lambda表达式,它以一个整数作为参数,并将其乘以外部变量factor
的值。[factor]
表示值捕获,我们还可以使用[&factor]
表示引用捕获。
Lambda表达式还支持函数重载、返回值自动推导、可变参数等功能,使得它在实际开发中非常灵活和强大。希望本教程能够帮助你更好地理解和使用C++11中的lambda表达式。