c++ lambda表达式

c++11引入了Lambda表达式,使得开发人员可以更方便的创建匿名函数。Lambda表达式是c++语言的一个重要特性,它可以作为函数对象使用,可以用来替代一些繁琐的函数声明和定义。

 

语法:

  • [capture list]是捕获列表,必填。
  • (parameter list)是参数列表,选填。
  • specifiers是限定符,选填。
  • exception是异常说明符,选填。
  • -> type是返回值类型,选填。
  • { function body }是表达式的函数体,必填。

 

一个简单的例子: [](int x, int y){ return x + y; }

 

参数列表 没有可省略,

mutable规范  异常说明 可选 ,(有两个知识点,mutable牵扯在值捕获下,修改值)

返回类型 可选,

 

---------------------

这里重点说下,捕获列表,顾名思义:把父作用域的局部变量(非静态)捕获到lambda内部使用(局部静态变量可直接访问,全局变量访问权限待试),

捕获列表书写在[]中,与函数参数的传递类似,捕获方式可以是值和引用。

 

1.把要捕获的变量一个,一个列出来也叫显示捕获。

2.用=,&捕获,叫隐式捕获 (告诉编译器,=值捕获方式,&引用捕获方式)。

 

 

 

转:

https://baijiahao.baidu.com/s?id=1764204752336882618&wfr=spider&for=pc

https://blog.csdn.net/kinghzking/article/details/131132529

https://learn.microsoft.com/zh-cn/cpp/cpp/lambda-expressions-in-cpp?view=msvc-170

 

posted @ 2024-01-09 14:58  与f  阅读(2)  评论(0编辑  收藏  举报