#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();
}

15.lambda表达式的更多相关文章

  1. 快速了解Lambda表达式-Java

    目录 lambda表达式 前言 简介 简单入门 用法 好处 总结 lambda表达式 前言 最近因为疫情,也不能正常返校什么的,希望大家都能好好的,希望武汉加油,中国加油,在家也看了很多视频,学了一点 ...

  2. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  3. lambda表达式

    什么是Lambda表达式 lambda表达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出 ...

  4. JDK8 的 Lambda 表达式原理

    JDK8 使用一行 Lambda 表达式可以代替先前用匿名类五六行代码所做的事情,那么它是怎么实现的呢?从所周知,匿名类会在编译的时候生成与宿主类带上 $1, $2 的类文件,如写在 TestLamb ...

  5. C#中的Lambda表达式和表达式树

    在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...

  6. Java8 Lambda表达式和流操作如何让你的代码变慢5倍

    原文出处:ImportNew 有许许多多关于 Java 8 中流效率的讨论,但根据 Alex Zhitnitsky 的测试结果显示:坚持使用传统的 Java 编程风格——iterator 和 for- ...

  7. Java 8特性探究(1):通往lambda之路与 lambda表达式10个示例

    本文由 ImportNew 函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口.比如Java标准库中的ja ...

  8. Java 8 Lambda表达式探险

    为什么?    我们为什么需要Lambda表达式    主要有三个原因:    > 更加紧凑的代码      比如Java中现有的匿名内部类以及监听器(listeners)和事件处理器(hand ...

  9. lambda函数、lambda表达式

    C++11 新特性:Lambda 表达式 豆子 2012年5月15日 C++ 10条评论 参考文章:https://blogs.oracle.com/pcarlini/entry/c_1x_tidbi ...

随机推荐

  1. logAnalyzer日志管理系统配置实例

    LogAnalyzer日志管理系统配置实例 上个月我写过一篇<利用EventlogAnalyzer分析Linux日志>一文深受大家喜欢,今天我再次为大家讲解Linux系统下的一款开源的日志 ...

  2. Linq中where查询

    Linq的Where操作包括3种形式:简单形式.关系条件形式.First()形式. 1.简单形式: 例:使用where查询在北京的客户 var q = from c in db.Customers   ...

  3. jQuery - 设置内容和属性 设置内容 - text()、html() 以及 val() , 设置属性 - attr()

    jQuery - 设置内容和属性  设置内容 - text().html() 以及 val() text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTM ...

  4. window安装MQTT服务器和client

    http://activemq.apache.org/apollo/download.html  官方下载地址   MQTT目录: MQTT简单介绍 window安装MQTT服务器和client ja ...

  5. mpvue 开发小程序

    转换成vue语法, 小程序中原生的事件用@ 原生的属性用:

  6. Python之路:画空心矩形

    1.if语句中当要判断多个语句成立才能执行语句时候,可以用or(或,只要其中一个成立就可以执行下一条语句)或者and(只要有其中一个不成立就不会执行下一条语句) 2.在Python中range函数会产 ...

  7. boost::asio与ACE的对比

    http://blog.163.com/miky_sun/blog/static/3369405201041753652505/

  8. Qt Quick 之 PathView 具体解释

    PathView ,顾名思义,沿着特定的路径显示 Model 内的数据. Model 能够是 QML 内建的 ListModel . XmlListModel ,也能够是在 C++ 中实现的 QAbs ...

  9. Ubuntu中的解压缩文件的方式

    记录Ubuntu下各种压缩和解压方式: .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) -- ...

  10. I帧、P帧和B帧的特点

    I帧:帧内编码帧 I帧特点: 1.它是一个全帧压缩编码帧.它将全帧图像信息进行JPEG压缩编码及传输; 2.解码时仅用I帧的数据就可重构完整图像; 3.I帧描写叙述了图像背景和运动主体的详情; 4.I ...