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 ...
随机推荐
- jython awt demo
jython awt demo : """\ Create a panel showing all of the colors defined in the pawt.c ...
- [codewars_python]Sum of Digits / Digital Root
Instructions In this kata, you must create a digital root function. A digital root is the recursive ...
- Linux学习总结(8)——VMware v12.1.1 专业版以及永久密钥
VMware v12.1.1 专业版以及永久密钥 热门虚拟机软件VMware Workstation 现已更新至v12.1.1 专业版!12.0属于大型更新,专门为Win10的安装和使用做了优化,支持 ...
- Linux下安装Go环境
登录Linux Mac或Linux的用户可以用命令ssh root@xxx.xxx.xxx.xxx登录主机Window的用户可以使用SecureCRT登录主机虚拟机用户直接打开你的虚拟机 安装Go环境 ...
- Image与byte[]数组的相互转换
近期项目有个需求是关于图片操作的,须要将图片保存到数据库中.经过尝试才知道Image类型文件是不能直接存储到数据库中的.保存之前须要我们做一步转换:将Image转换成字节数组类型Byte ...
- PopupWindow的一些属性
void setOutsideTouchable(boolean touchable) Controls whether the pop-up will be informed ...
- Android_L(64bit) 模拟器配置及创建项目
Android L可能就是Android 5.0.随之而来的还有Android Watch. Android TV. 而据说在10月中旬也就是15号Google的公布会上应该会推出Nexus 6和Ne ...
- Extjs在HtmlEditor的工具栏上插入自定义按钮
Ext.ns('Ext.ux.form.HtmlEditor');Ext.ux.form.HtmlEditor.HR =Ext.extend(Ext.util.Observable,{ init:fu ...
- onvif开发总结
ONVIF开发经验总结 ONVIF开发经验总结............................................................................. ...
- 70.nodejs操作mongodb
转自:https://www.cnblogs.com/whoamme/p/3467374.html 首先安装nodejs mongodb npm install mongodb var mongodb ...