c++ lamaba函数
时间: 2023-11-30 09:02:19 浏览: 120
Lambda函数是C++11引入的一种新特性,是一种可以在运行时定义函数对象的方式,它可以在需要的地方直接使用,而无需事先定义一个命名函数。Lambda函数可以作为参数传递给其他函数,并可以在函数内部定义,从而提高代码的可读性和可维护性。
Lambda函数的语法如下:
```
[capture list] (parameter list) -> return type { function body }
```
其中,方括号内的“capture list”用于捕获Lambda函数的上下文中的变量,可以为空。括号内的“parameter list”和箭头符号(->)后面的“return type”与普通函数的参数和返回值类型类似。而花括号内的“function body”则是Lambda函数的具体实现。
例如,下面的Lambda函数将两个整数相加并返回结果:
```
auto add = [](int a, int b) -> int { return a + b; };
int result = add(1, 2); // result = 3
```
在Lambda函数中,我们使用了“[]”对变量进行捕获,这里为空表示不捕获任何变量。而括号内的“int a, int b”则表示Lambda函数的参数列表,箭头符号后面的“int”表示返回值类型,花括号内的代码则是Lambda函数的具体实现。
Lambda函数还支持自动类型推导,例如:
```
auto add = [](auto a, auto b) { return a + b; };
int result1 = add(1, 2); // result1 = 3
double result2 = add(1.5, 2.5); // result2 = 4.0
```
这里,Lambda函数的参数类型和返回值类型都使用了“auto”关键字,表示编译器可以自动推导类型。
Lambda函数还可以作为其他函数的参数进行传递,例如:
```
void runFunction(std::function<int(int, int)> func) {
int result = func(1, 2);
std::cout << "Result: " << result << std::endl;
}
runFunction([](int a, int b) -> int { return a + b; }); // 输出 "Result: 3"
```
这里,我们定义了一个名为“runFunction”的函数,它的参数为一个返回值类型为“int”的Lambda函数。在调用“runFunction”时,我们将一个Lambda函数作为参数传递给它。在函数内部,我们使用传入的Lambda函数计算结果,并输出到控制台。
阅读全文