创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
c语言内容💖:
专栏:c语言之路重点知识整合
【c语言】全部知识点总结
目录
- lambda表达式的格式:
- 例 1:
- 例 2:按照值传递捕获外部变量
- 例 3:
- 例 4:
- 例 5:
C++11 中的 lambda表达式用于定义匿名函数,同样有 参数列表, 返回值、 类型和 函数体,
但是它可以在函数内部定义。
定义小型匿名函数对象时更加便捷。
lambda表达式的格式:
auto 函数名 = [capture](parameters) -> return_type { body };
其中:
- captures 捕获列表,用于捕获lambda外部的变量 , lambda可以把上下文变量以**值=或引用&**的方式捕获(如果是引用传递,lambda 函数将会改变变量值),在body中直接使用,可以省略,即不捕获任何变量
- parameters 参数列表,与普通函数的参数列表相同
- ->return_type lambda 表达式的返回类型,如果省略,编译器将自动推导类型
- body 函数体代码
例 1:
没有捕获列表、参数、返回值的 lambda 函数:
#include<iostream>
using namespace std;
int main()
{
auto fun = []() { cout << "this is a lambda function" << endl; };
fun();
getchar();
return 0;
}
例 2:按照值传递捕获外部变量
#include<iostream>
using namespace std;
int main()
{
int x = 10;
auto lambda = [x]() { return x * 2; };
cout << lambda() << " " << x << endl;
getchar();
return 0;
}
例 3:
按照引用传递捕获外部变量,将外部变量的值改变了:
#include<iostream>
using namespace std;
int main()
{
int x = 10;
auto lambda = [&x]() { x *= 2; return x; };
cout << lambda() << " " << x << endl;
getchar();
return 0;
}
例 4:
带有返回值的 lambda 表达式
#include<iostream>
using namespace std;
int main()
{
auto lambda = [](int a, int b) -> int { return a + b; };
cout << lambda(2, 3) << endl;
getchar();
return 0;
}
例 5:
定义为匿名函数,放在其他函数的参数中
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> numbers = { 1, 2, 3, 4, 5 };
// lambda表达式来对numbers逆向逆向排序
sort(numbers.begin(), numbers.end(), [](int x, int y) {return x > y; });
for (auto i : numbers)
{
cout << i << " ";
}
getchar();
return 0;
}
大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 |
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●) |