15.lambda表达式
- #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表达式的更多相关文章
- 快速了解Lambda表达式-Java
目录 lambda表达式 前言 简介 简单入门 用法 好处 总结 lambda表达式 前言 最近因为疫情,也不能正常返校什么的,希望大家都能好好的,希望武汉加油,中国加油,在家也看了很多视频,学了一点 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- lambda表达式
什么是Lambda表达式 lambda表达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出 ...
- JDK8 的 Lambda 表达式原理
JDK8 使用一行 Lambda 表达式可以代替先前用匿名类五六行代码所做的事情,那么它是怎么实现的呢?从所周知,匿名类会在编译的时候生成与宿主类带上 $1, $2 的类文件,如写在 TestLamb ...
- C#中的Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
- Java8 Lambda表达式和流操作如何让你的代码变慢5倍
原文出处:ImportNew 有许许多多关于 Java 8 中流效率的讨论,但根据 Alex Zhitnitsky 的测试结果显示:坚持使用传统的 Java 编程风格——iterator 和 for- ...
- Java 8特性探究(1):通往lambda之路与 lambda表达式10个示例
本文由 ImportNew 函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口.比如Java标准库中的ja ...
- Java 8 Lambda表达式探险
为什么? 我们为什么需要Lambda表达式 主要有三个原因: > 更加紧凑的代码 比如Java中现有的匿名内部类以及监听器(listeners)和事件处理器(hand ...
- lambda函数、lambda表达式
C++11 新特性:Lambda 表达式 豆子 2012年5月15日 C++ 10条评论 参考文章:https://blogs.oracle.com/pcarlini/entry/c_1x_tidbi ...
随机推荐
- Excel 文本内容拆分
1.首先把文本数据粘贴到excel-->在旁边插入空白列..选择数据-->分列-->固定宽度 2.数据预览点击下一步 3.最后分好的数据就在 归去来兮,田园将芜胡不归?既自以心为形役 ...
- Ubuntu Bonding(16.04网卡绑定)
UbuntuBonding(网卡绑定) 绑定,也称为端口聚合或链路聚合,意味着将多个网络接口(NIC)组合到单个链路,从而提供高可用性,负载平衡,最大吞吐量或这些组合.注意bonding只能提供链路监 ...
- Huawei交换机VRP配置介绍
一.命令视图• 用户视图<Huawei>• 系统视图 [Huawei]• 接口视图 [Huawei-GigabitEthernet0/0/1]• 协议视图 [Huawei-rip-1]• ...
- Nginx安装与升级(包括虚拟主机)
Nginx WEB服务器最主要就是各种模块的工作,模块从结构上分为核心模块.基础模块和第三方模块,其中三类模块分别如下: 核心模块:HTTP模块.EVENT模块和MAIL模块等: 基础模块:HTTP ...
- 【python 设计模式】单例模式
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某 ...
- [BZOJ2143]飞飞侠 并查集优化最短路
链接 题解 首先很容易想到对每个点暴力跑Dijkstra,但是这样边数是 \(N^4\) 的,考虑优化 发现每次松弛的时候,都要把整个地图扫一遍,每个节点都要重复扫很多次,如果我们在一个点不会再被更新 ...
- SQLite详解,案例,手册
SQLite 存储类型 1.NULL 2.INTEGER 3.REAL 4.TEXT 5.BLOB 创建表 CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT N ...
- 判断浏览器是否支持某些新属性---placeholder兼容问题解决
function is_true(){ return 'placeholder' in document.createElement('input'); } 实例:placeholder在低版本IE浏 ...
- element-ui一些注意点:
1.change ($event,“你要传递的其他值”),使用el-select组件时,想传递多个值. 或者 在el-option上的value属性上传递对象 eg: :value="{'c ...
- ssh-keygen && ssh-copy-id 生成管理传输秘钥