lambda函数小结
C++中的lambda函数
lambda函数是函数式编程中的概念,由C++11引入,成为现代C++中重要的特性。
所谓lambda函数就是匿名函数,语法结构:
[capture list] (params) mutable noexcept -> return type { body }
- capture list : 捕获列表
- params : 参数列表
- mutable : 是否能更改按值捕获的变量
- noexcept : 是否抛出异常
- -> return type : 返回类型
- body : 函数体
这里面必须存在的只有捕获列表和函数体[capture list] { body }。
基本概念
lambda函数在C++中也叫lambda表达式,由lambda表达式生成的对象叫做闭包(closure)。
C++是用仿函数类来实现lambda函数的,所以每一个lambda函数其实对应了一个闭包类。
为什么需要mutable关键字
刚才说lambda函数其实对应了一个闭包类,但是它的调用接口默认是const的,所以需要显式加上mutable关键字。
捕获this
lambda函数只能捕获局部非静态变量,所以在类的成员函数中捕获时,无法直接捕获成员变量,但是可以捕获this:[this] (params) { body }。
init capture
C++14引入了新的捕获模式,那就是init capture,可以用移动语义捕获,并且可以直接捕获成员变量,比如对于移动语义捕获:
[up = std::make_unique()] (params) { body }
在C++中,只有自己写仿函数类,或者使用bind函数来模拟这一语法。
lambda函数小结的更多相关文章
- 关于python中lambda 函数使用小结
例子: 如果定义普通函数,一般都是这样写: def:ds(x): return 2*x+1 调用即: ds(5) 如果用lambda函数就是这么写,就是一句话: g =lambda x:2*x+1 调 ...
- 14.在Python中lambda函数是什么
在Python中lambda函数是什么? It is a single expression anoymous function often used as inline function. lamb ...
- Python-内置函数小结
内建函数,Python内置的函数(build in function),不需要引用其他包,一般成为BIF abs() 计算绝对值,abs(-10),接收number,返回一个number ma ...
- Python lambda函数
python允许定义单行的小函数,定义lambda函数的形式如下: lambda 参数:表达式lambda函数默认返回表达式的值,可接收任意个参数,包括可选参数,但是表达式只有一个.
- python之map、filter、reduce、lambda函数 转
python之map.filter.reduce.lambda函数 转 http://www.cnblogs.com/kaituorensheng/p/5300340.html 阅读目录 map ...
- python中lambda函数
1.lambda函数使用如下: lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右侧的是返回值 >>> g=lambda x,y:x*y>>> g(4 ...
- Python 之 lambda 函数
Python 支持一种单行匿名函数,这种函数称为 lambda,它最初借鉴自 Lisp. >>> add = lambda x, y: x +y >>> add(3 ...
- python之map、filter、reduce、lambda函数
map map函数根据提供的函数对指定的序列做映射,定义:map(function, sequence[,sequence,...])--->list 例1 >>> map(l ...
- C++11—lambda函数
[1]lambda表达式语法定义 lambda表达式的语法定义如下: [capture] (parameters) mutable ->return-type {statement}; (1) ...
随机推荐
- cookie和session讲解
1.cookie是什么? 保存在浏览器本地上的一组组键值对 2.session是什么? 保存在服务器上的一组组键值对 3.为什么要有cookie? HTTP是无协议状态,每次请求都是互相独立的,没有办 ...
- oracle之二数据库审计
数据库审计audit(PPT-I-320-334) 13.1 审计的功能:监控特定用户在database 的action(操作) 13.2 审计种类: 1)标准数据库审计(语句审计.权限审计.对象审计 ...
- 第 8 篇:内容支持 Markdown 语法,接口返回包含解析后的 HTML
作者:HelloGitHub-追梦人物 在 Django博客教程(第二版) 中,我们给博客内容增加了 Markdown 的支持,博客详情接口应该返回解析后的 HTML 内容. 来回顾一下 Post 模 ...
- adrci清理日志
adrci> show home adrci> set home diag/rdbms/mesp/MESP adrci> help purge adrci> purge -ag ...
- 容器云平台No.5~企业级私有镜像仓库Harbor V2.02
镜像仓库 仓库,顾名思义,就是存放东西的地方,Docker仓库,理所当然,就是存放docker镜像的地方了. Docker仓库分公有仓库和私有仓库.共有仓库有hub.docker.com.gcr.io ...
- OpenCV计算机视觉学习(1)——图像基本操作(图像视频读取,ROI区域截取,常用cv函数解释)
1,计算机眼中的图像 我们打开经典的 Lena图片,看看计算机是如何看待图片的: 我们点击图中的一个小格子,发现计算机会将其分为R,G,B三种通道.每个通道分别由一堆0~256之间的数字组成,那Ope ...
- SpringBoot普通消息队列线程池配置
1 package com.liuhuan.study.config; 2 3 import com.google.common.util.concurrent.ThreadFactoryBuilde ...
- 趣图:我说自己菜 vs 大佬说自己菜
扩展阅读 一大波趣图:CSS的力量 趣图:嫁人就嫁程序员,大妈都懂的! 趣图:向客户介绍的产品VS实际开发的产品 如何准备校招技术面试+一只小菜鸟的面试之路 向Spring大佬低头--大量源码流出 ...
- minium-微信小程序自动化框架-python,官方文档
minium文档 个人将其部署到了自己的服务器上,如有需要可以访问共同学习这个minium 用python来实现小程序自动化测试... 文档地址 http://49.232.203.244:3000/ ...
- 神经网络全连接层+softmax:
如下图:(图片来自StackExchange) 强化说明全连接层: 1.通常将网络最后一个全连接层的输入,即上面的x \mathrm{x}x,视为网络从输入数据提取到的特征. 2. 强化说明softm ...