c++ lambda函数_C++ Lambda表达式

利用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 

04041fb86ba32bf7bbd25371ada38da8.png

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


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

C++相关知识:

Anxjing.AI:C++ this_thread::sleep_for​zhuanlan.zhihu.com
2f282cf23efc045c58b5b17b1a6a8bb4.png
Anxjing.AI:C++ Lambda表达式​zhuanlan.zhihu.com
2ec6c40efaf34ab4979340441515e1a6.png
Anxjing.AI:C++并发_condition_variable​zhuanlan.zhihu.com
07b00197c6c427d669d98a666aa77457.png
Anxjing.AI:生产者-消费者模型​zhuanlan.zhihu.com
58f2c9a42f6cc8bc53448226f6281d64.png
Anxjing.AI:C++预处理指令​zhuanlan.zhihu.com
f11ccb364cf5efb4a42efbb7185758b2.png
Anxjing.AI:C++工具:Cmake​zhuanlan.zhihu.com
f66f694fa4bd45da169545e824e9461e.png
Anxjing.AI:SSH 学习​zhuanlan.zhihu.com
7f0a1ebd7a4a68d553c66a59e1470f84.png
Anxjing.AI:记录C++阶段性学习一​zhuanlan.zhihu.com
f1841c308869404343055a3bd76cc509.png
Anxjing.AI:DesignPatterns C++:单例模式​zhuanlan.zhihu.com
fc818a1746c285a49652d048ad65b862.png
Anxjing.AI:C++基础:map简析​zhuanlan.zhihu.com
70dbec07a8de2048af68e4f85dcfd217.png
Anxjing.AI:C++基础:memset函数简析​zhuanlan.zhihu.com
feec6cc98bb142f8fe278d8c6e4857e7.png
Anxjing.AI:C++基础:break&continue区别​zhuanlan.zhihu.com
15b0e51ec5422f62e1e36a98059b87ba.png
Anxjing.AI:C++基础:指针和引用的区别​zhuanlan.zhihu.com
81c1cdb53419b074f1767f642384d8f1.png
Anxjing.AI:C++中::和:, .和->的作用和区别?​zhuanlan.zhihu.com
c802b0f5ce2f93e512d0142c27618fb6.png
Anxjing.AI:string中c_str()的使用方法和特性​zhuanlan.zhihu.com
70dbec07a8de2048af68e4f85dcfd217.png
Anxjing.AI:C ++ strcpy()和strncpy()函数​zhuanlan.zhihu.com
a8ff4a851cbc355e5f2f48dff463d28e.png
Anxjing.AI:C++基础-关键字virtual​zhuanlan.zhihu.com
8eb702dbce27f6497fc5dfd4c522f355.png
Anxjing.AI:C++基础-函数重载​zhuanlan.zhihu.com
454f35aa122aeffade8fa8b67c8679d4.png
Anxjing.AI:C++基础-static​zhuanlan.zhihu.com
6d2edc49a0c8c000fd7d17ccd9481d1b.png
Anxjing.AI:C++基础:判断文件是否存在的方法​zhuanlan.zhihu.com
24fe4ab826e327bdde2b7a6476659113.png
Anxjing.AI:C++基础-strstr查找子串​zhuanlan.zhihu.com
8e55d8cc6c60aa9a9fd68cca8a2ce5d0.png
Anxjing.AI:C++基础:std::thread多线程​zhuanlan.zhihu.com
df539dde7abcb9af4cbd2c6b8654ab2c.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值