#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. jython awt demo

    jython awt demo : """\ Create a panel showing all of the colors defined in the pawt.c ...

  2. [codewars_python]Sum of Digits / Digital Root

    Instructions In this kata, you must create a digital root function. A digital root is the recursive ...

  3. Linux学习总结(8)——VMware v12.1.1 专业版以及永久密钥

    VMware v12.1.1 专业版以及永久密钥 热门虚拟机软件VMware Workstation 现已更新至v12.1.1 专业版!12.0属于大型更新,专门为Win10的安装和使用做了优化,支持 ...

  4. Linux下安装Go环境

    登录Linux Mac或Linux的用户可以用命令ssh root@xxx.xxx.xxx.xxx登录主机Window的用户可以使用SecureCRT登录主机虚拟机用户直接打开你的虚拟机 安装Go环境 ...

  5. Image与byte[]数组的相互转换

         近期项目有个需求是关于图片操作的,须要将图片保存到数据库中.经过尝试才知道Image类型文件是不能直接存储到数据库中的.保存之前须要我们做一步转换:将Image转换成字节数组类型Byte ...

  6. PopupWindow的一些属性

     void setOutsideTouchable(boolean touchable)            Controls whether the pop-up will be informed ...

  7. Android_L(64bit) 模拟器配置及创建项目

    Android L可能就是Android 5.0.随之而来的还有Android Watch. Android TV. 而据说在10月中旬也就是15号Google的公布会上应该会推出Nexus 6和Ne ...

  8. Extjs在HtmlEditor的工具栏上插入自定义按钮

    Ext.ns('Ext.ux.form.HtmlEditor');Ext.ux.form.HtmlEditor.HR =Ext.extend(Ext.util.Observable,{ init:fu ...

  9. onvif开发总结

    ONVIF开发经验总结 ONVIF开发经验总结............................................................................. ...

  10. 70.nodejs操作mongodb

    转自:https://www.cnblogs.com/whoamme/p/3467374.html 首先安装nodejs mongodb npm install mongodb var mongodb ...