1. #include <iostream>
  2. #include <array>
  3. using namespace std;
  4.  
  5. //解决函数怀孕现象
  6. //[](){}
  7. //[] =引用,只读 =mutable读原本改副本 &读写原本 //&a,b a可读写,b只能读
  8. //() 参数,int a,int b
  9. //{}语句
  10. void main()
  11. {
  12. //lambda表达式
  13. auto fun1 = [] {cout << "hello" << endl; cout << "hello2" << endl; };//函数指针
  14. fun1();//括号起到调用的作用
  15.  
  16. //[](参数列表){执行逻辑}
  17. auto fun2 = [](char *str) {cout << str << endl; };
  18. fun2("hello3");
  19.  
  20. //lambda带参函数
  21. auto fun3 = [](int a, int b) {return a + b; };
  22. cout << fun3(, ) << endl;
  23.  
  24. //->用在(){}之间,用于确定返回值类型
  25. auto fun4 = [](int a, int b)->double {return a + b; };
  26. cout << fun4(, ) << endl;
  27.  
  28. //decltype解决类型自动推理
  29. auto fun5 = [](int a, int b)->decltype(a+b) {return a + b; };
  30. cout << fun5(, ) << endl;
  31.  
  32. int num1 = ;
  33. int num2 = ;
  34. //=可以使用外部变量,只能读不能写
  35. auto fun6 = [=](){cout << num1 << num2 << endl; };
  36. fun6();
  37.  
  38. //&可以使用外部变量,读写(对原数据的操作)
  39. auto fun7 = [&](){num1 = ; cout << num1 << num2 << endl; };
  40. fun7();
  41.  
  42. //mutable可以使用外部变量,读写(副本机制,不对原数据进行改变)
  43. auto fun8 = [=]()mutable{num1 = ; cout << num1 << num2 << endl; };
  44. fun8();
  45.  
  46. //指定可读写的元素 num1可读可写,num2只能读
  47. auto fun9 = [&num1, num2]() {num1 = ; cout << num2 << endl; };
  48. fun9();
  49.  
  50. //mutable可读可写但作用的是副本
  51. auto fun10 = [num1, num2]() mutable{num1 = ; cout << num2 << endl; };
  52. fun10();
  53.  
  54. //lambda与auto
  55. auto fun11 = [](auto a, auto b)->decltype(a+b){return a + b; };
  56. cout << fun11(,3.9) << endl;
  57.  
  58. //内嵌调用lambda
  59. array<int, > myarray{, , , , , , , , , };
  60. for_each(myarray.begin(), myarray.end(), [](int &num) {num += ; cout << num << endl; });
  61. cin.get();
  62. }

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. Excel 文本内容拆分

    1.首先把文本数据粘贴到excel-->在旁边插入空白列..选择数据-->分列-->固定宽度 2.数据预览点击下一步 3.最后分好的数据就在 归去来兮,田园将芜胡不归?既自以心为形役 ...

  2. Ubuntu Bonding(16.04网卡绑定)

    UbuntuBonding(网卡绑定) 绑定,也称为端口聚合或链路聚合,意味着将多个网络接口(NIC)组合到单个链路,从而提供高可用性,负载平衡,最大吞吐量或这些组合.注意bonding只能提供链路监 ...

  3. Huawei交换机VRP配置介绍

    一.命令视图• 用户视图<Huawei>• 系统视图 [Huawei]• 接口视图 [Huawei-GigabitEthernet0/0/1]• 协议视图 [Huawei-rip-1]• ...

  4. Nginx安装与升级(包括虚拟主机)

    Nginx WEB服务器最主要就是各种模块的工作,模块从结构上分为核心模块.基础模块和第三方模块,其中三类模块分别如下: 核心模块:HTTP模块.EVENT模块和MAIL模块等: 基础模块:HTTP ...

  5. 【python 设计模式】单例模式

    单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某 ...

  6. [BZOJ2143]飞飞侠 并查集优化最短路

    链接 题解 首先很容易想到对每个点暴力跑Dijkstra,但是这样边数是 \(N^4\) 的,考虑优化 发现每次松弛的时候,都要把整个地图扫一遍,每个节点都要重复扫很多次,如果我们在一个点不会再被更新 ...

  7. SQLite详解,案例,手册

    SQLite 存储类型 1.NULL 2.INTEGER 3.REAL 4.TEXT 5.BLOB 创建表 CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT N ...

  8. 判断浏览器是否支持某些新属性---placeholder兼容问题解决

    function is_true(){ return 'placeholder' in document.createElement('input'); } 实例:placeholder在低版本IE浏 ...

  9. element-ui一些注意点:

    1.change ($event,“你要传递的其他值”),使用el-select组件时,想传递多个值. 或者 在el-option上的value属性上传递对象 eg: :value="{'c ...

  10. ssh-keygen && ssh-copy-id 生成管理传输秘钥