15.lambda表达式
2024-08-31 17:31:33
#include <iostream>
#include <array>
using namespace std; //解决函数怀孕现象
//[](){}
//[] =引用,只读 =mutable读原本改副本 &读写原本 //&a,b a可读写,b只能读
//() 参数,int a,int b
//{}语句
void main()
{
//lambda表达式
auto fun1 = [] {cout << "hello" << endl; cout << "hello2" << endl; };//函数指针
fun1();//括号起到调用的作用 //[](参数列表){执行逻辑}
auto fun2 = [](char *str) {cout << str << endl; };
fun2("hello3"); //lambda带参函数
auto fun3 = [](int a, int b) {return a + b; };
cout << fun3(, ) << endl; //->用在(){}之间,用于确定返回值类型
auto fun4 = [](int a, int b)->double {return a + b; };
cout << fun4(, ) << endl; //decltype解决类型自动推理
auto fun5 = [](int a, int b)->decltype(a+b) {return a + b; };
cout << fun5(, ) << endl; int num1 = ;
int num2 = ;
//=可以使用外部变量,只能读不能写
auto fun6 = [=](){cout << num1 << num2 << endl; };
fun6(); //&可以使用外部变量,读写(对原数据的操作)
auto fun7 = [&](){num1 = ; cout << num1 << num2 << endl; };
fun7(); //mutable可以使用外部变量,读写(副本机制,不对原数据进行改变)
auto fun8 = [=]()mutable{num1 = ; cout << num1 << num2 << endl; };
fun8(); //指定可读写的元素 num1可读可写,num2只能读
auto fun9 = [&num1, num2]() {num1 = ; cout << num2 << endl; };
fun9(); //mutable可读可写但作用的是副本
auto fun10 = [num1, num2]() mutable{num1 = ; cout << num2 << endl; };
fun10(); //lambda与auto
auto fun11 = [](auto a, auto b)->decltype(a+b){return a + b; };
cout << fun11(,3.9) << endl; //内嵌调用lambda
array<int, > myarray{, , , , , , , , , };
for_each(myarray.begin(), myarray.end(), [](int &num) {num += ; cout << num << endl; });
cin.get();
}
最新文章
- html+ccs3太阳系行星运转动画之土星有个环,地球有颗小卫星
- linux下进程突然断掉后的日志查询
- Zabbix_server.conf 的性能调优
- Eclipse开发Android程序如何在手机上运行
- 判断数据库内容,在页面显示自定义数据case when
- 取消eclipse启动时的subclipse Usage弹窗
- OpenCart框架运行流程介绍
- Oracle 11g-R2 SQL Developer连接MSSQL2008
- (转载)URL与URI的区别
- Java程序设计-表达式运算(个人博客)
- 2015 多校联赛 ——HDU5289(二分+ST)
- Tomcat中的ssl安全信道的实现
- 拾人牙慧篇之——linux文件挂载,基于nfs的文件共享系统安装配置
- JS,JQ 格式化小数位数
- Python机器学习(基础篇---监督学习(朴素贝叶斯))
- mnist的格式说明,以及在python3.x和python 2.x读取mnist数据集的不同
- 微信小程序 - 曲线图
- java----字符串的大写字母右移
- vue的地图插件amap
- bzoj3756pty的字符串(后缀自动机+计数)