利用Lambda表达式,可以方便的定义和创建匿名函数。Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值。

当一个函数需要将另一个函数用作参数时,可以使用 Lambda。

lambda表达式声明

[

含义说明

capture list:捕获外部变量列表
params list:形参列表
mutable指示符:用来说用是否可以修改捕获的变量
exception:异常设定
return type:返回类型
function body:函数体

基本语法

[](

例如

#include 

例2 外部变量

Lambda表达式可以使用其可见范围内的外部变量,但必须明确声明(明确声明哪些外部变量可以被该Lambda表达式使用)。

#include 

例3 值捕获

值捕获和参数传递中的值传递类似,被捕获的变量的值在Lambda表达式创建时通过值拷贝的方式传入,因此随后对该变量的修改不会影响影响Lambda表达式中的值。

int 

例4 引用捕获

使用引用捕获一个外部变量,只需要在捕获列表变量前面加上一个引用说明符&

int 

例5 隐式捕获

让编译器根据函数体中的代码来推断需要捕获哪些变量,这种方式称之为隐式捕获。隐式捕获有两种方式,分别是[=]和[&]。[=]表示以值捕获的方式捕获外部变量,[&]表示以引用捕获的方式捕获外部变量。

隐式值捕获

int 

隐式引用捕获

int 

Lambda表达式参数说明

Lambda表达式的参数和普通函数的参数类似,但是Lambda表达式中传递参数还有一些限制,主要有以下几点:

  1. 参数列表中不能有默认参数
  2. 所有参数必须有参数名
  3. 不支持可变参数

例如

int 

欢迎关注 https://www.zhihu.com/people/anxjing


若你对人工智能(CV/NLP)、C++/python编程、互联网就业及发展有兴趣,欢迎点赞关注和收藏。谢谢鼓励!!!

C++相关知识:

Anxjing.AI:C++ this_thread::sleep_for​zhuanlan.zhihu.com

Anxjing.AI:C++ Lambda表达式​zhuanlan.zhihu.com

Anxjing.AI:C++并发_condition_variable​zhuanlan.zhihu.com

Anxjing.AI:生产者-消费者模型​zhuanlan.zhihu.com

Anxjing.AI:C++预处理指令​zhuanlan.zhihu.com

Anxjing.AI:C++工具:Cmake​zhuanlan.zhihu.com

Anxjing.AI:SSH 学习​zhuanlan.zhihu.com

Anxjing.AI:记录C++阶段性学习一​zhuanlan.zhihu.com

Anxjing.AI:DesignPatterns C++:单例模式​zhuanlan.zhihu.com

Anxjing.AI:C++基础:map简析​zhuanlan.zhihu.com

Anxjing.AI:C++基础:memset函数简析​zhuanlan.zhihu.com

Anxjing.AI:C++基础:break&continue区别​zhuanlan.zhihu.com

Anxjing.AI:C++基础:指针和引用的区别​zhuanlan.zhihu.com

Anxjing.AI:C++中::和:, .和->的作用和区别?​zhuanlan.zhihu.com

Anxjing.AI:string中c_str()的使用方法和特性​zhuanlan.zhihu.com

Anxjing.AI:C ++ strcpy()和strncpy()函数​zhuanlan.zhihu.com

Anxjing.AI:C++基础-关键字virtual​zhuanlan.zhihu.com

Anxjing.AI:C++基础-函数重载​zhuanlan.zhihu.com

Anxjing.AI:C++基础-static​zhuanlan.zhihu.com

Anxjing.AI:C++基础:判断文件是否存在的方法​zhuanlan.zhihu.com

Anxjing.AI:C++基础-strstr查找子串​zhuanlan.zhihu.com

Anxjing.AI:C++基础:std::thread多线程​zhuanlan.zhihu.com

c++ lambda函数_C++ Lambda表达式相关推荐

  1. c++ lambda函数_C++11 之 lambda函数的详细使用

    1. lambda 函数概述 lambda 表达式是一种匿名函数,即没有函数名的函数:该匿名函数是由数学中的λ演算而来的.通常情况下,lambda函数的语法定义为: [capture] (parame ...

  2. 【lambda函数】lambda()函数

    lambda() lambda()语法 捕捉列表 mutable lambda 底层原理 函数对象与lambda表达式 lambda()语法 lambda表达式书写格式: [capture-list] ...

  3. lambda函数 java_使用 Java 构建 Lambda 函数 - AWS Lambda

    本文属于机器翻译版本.若本译文内容与英语原文存在差异,则一律以英文原文为准. 使用 Java 构建 Lambda 函数 您可以在 AWS Lambda 中运行 Java 代码.Lambda 为运行代码 ...

  4. python key=lambda函数_Python lambda函数,pythonlambda

    lambda x: 3*x+1 怎么用它呢 , 来给它一个名字 g = lambda x:3*x+1 调用一下它 g(2) 如果想有多个input怎么办? 比如说想把 first name 和 las ...

  5. C++语言之Lambda函数与表达式

    C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式). Lambda 表达式把函数看作对象.Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参 ...

  6. C++编程语言之Lambda 函数与表达式

    C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式). Lambda 表达式把函数看作对象.Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参 ...

  7. c++11标准:匿名函数(匿名表达式)lambda

    lambda: C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下: 匿名函数定义/匿名表达式声明:[capture](paramete ...

  8. C++ lambda函数总结,看这一篇就够了

    C++ lambda函数 1 lambda函数简介 名称lambda来自lambda calculus(lambda演算),一种定义和应用函数的数学系统.这个系统中可以使用匿名函数,对于接收函数指针或 ...

  9. Python Lambda函数的几种使用方法

    在进行编程时,一般我们会给一个函数或者变量起一个名字,该名称是用于引用或寻址函数变量.但是有一个低调的函数,你不需要赋予它名字,因此该函数也叫匿名函数.该函数就是Python中的Lambda函数,下面 ...

最新文章

  1. MySQL事物的概念
  2. 正则表达式(中文表达:检查表达式符)
  3. 在乌班图中将py3设置为默认解释器
  4. 【高清截图】UbuntuKylin 14.04 桌面版安装步骤
  5. Vue终端取消vue、prettier警告warn
  6. QT中如何固定窗口的大小?
  7. 发布Android开源库,看这个文章就够了!
  8. Git 命令行(cygwin) + Git Extensions + Git Source Control Provider
  9. Common-BeanUtils 使用
  10. win2008 用什么php,Win2008 Server配置PHP环境,win2008php
  11. C#版 微信无痕僵尸粉检测工具源码
  12. NoteBurner iTunes DRM Audio Converter Mac版(苹果DRM音频转换器)
  13. 基于51单片机+SG90舵机
  14. 思科ccnp现在出来工作有多少钱
  15. Linux交换内存10g,Linux服务器只使用60%的内存,然后交换
  16. 【嵌入式百科】003——时钟周期、指令周期、机器周期、总线周期
  17. WEBPACK DEV SERVER
  18. 信息安全复习题——期末
  19. 人大金仓与新疆大学开启产学研合作,助力数据库产业人才建设
  20. 简单封装的Stripe支付方法

热门文章

  1. 这所211高校通知不放寒假!校园将实行封闭管理!
  2. 多模态深度学习:用深度学习的方式融合各种信息
  3. 当支持向量机遇上神经网络......
  4. Anchor-free应用一览:目标检测、实例分割、多目标跟踪
  5. 2020职场AI技能排行榜:TensorFlow热度飙升,Python最火,市场部也在学
  6. 送书啦!40本经典书籍任你挑!
  7. 如何让自己在云服务器上部署的项目一直运行
  8. ACMNO.14一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 输入 M N 输出 它在第N次落地时反弹多高?共经过多少米
  9. Node2Vec:万物皆可Embedding
  10. 基于OpenCV 的车牌识别