Lambda表达式
为什么
-
简洁
-
可以实现函数对象局部定义
-
能够捕获作用域中对象
-
在算法中使用方便
是什么
内嵌的匿名函数 定义后自动生成一个匿名类
-
语法
[捕获列表](参数)mutable->int{return}
-
中括号起手,
[=]
捕获全部 -
加上
mutable
可以改变捕获到的参数 -
例:
// 算法中使用 std::vector<int> numbers = { 3, 1, 4, 1, 5, 9, 2, 6 }; sort(numbers.begin(),numbers.end(),[](int a, int b){ return a>b; }); for(int i:numbers) cout<<i<<" "; cout<<endl; // 引用, 是引用外部的 int a = 10;int b = 20; auto lambda_add = [&a,&b](){ a++; return a+b; }; cout<<lambda_add()<<endl; cout<<"a = "<<a<<endl; // 不加引用就是改变生成的对象的值 mutable int v1=42; auto f=[v1] () mutable->int{return v1++; }; v1=0; auto j=f(); //j 为 43 v1 = 100; auto k=f(); //k 为 44 cout<<"j = "<<j<<endl<<"k = "<<k<<endl;
-
输出
``` 9 6 5 4 3 2 1 1 31 a = 11 j = 42 k = 43 ```
-
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)