请详述 c++ 中 lambda 表达式使用
C++11 引入了 lambda 表达式,它是一个匿名函数对象,可以在代码中被直接定义和使用。lambda 表达式的格式如下:
复制代码
其中,capture list
指定了 lambda 表达式中所使用的外部变量,可以使用[]
来表示不捕获任何外部变量,也可以使用&
或=
来捕获所有外部变量,具体用法如下:
[]
:不捕获任何外部变量。[variable]
:捕获变量variable
,但不改变其值。如果该变量为值类型,则会进行复制;如果为引用类型,则会保留对原变量的引用。[&]
:捕获所有外部变量,并将它们作为引用传递。[=]
:捕获所有外部变量,并将它们作为值传递。如果要修改某个变量的值,则需要使用mutable
关键字。[&, variable]
:捕获所有外部变量,并将它们作为引用传递,但除了变量variable
以外,其他变量都是值传递。[=, &variable]
:捕获所有外部变量,并将它们作为值传递,但除了变量variable
以外,其他变量都是引用传递。
parameters
指定了 lambda 表达式的参数列表,与普通函数的参数列表类似。
return type
指定了 lambda 表达式的返回类型,如果省略则会根据函数体自动推断出返回类型。
function body
是 lambda 表达式的函数体,与普通函数的函数体类似。
以下是一个使用 lambda 表达式的示例:
复制代码
在这个示例中,我们使用了两个 lambda 表达式。第一个表达式用于对 vector 进行从小到大的排序;第二个表达式用于输出所有奇数。
相关技术视频教程:c/c++ linux服务器开发/后台架构师免费学习地址
c/c++后端技术交流群:812855908
评论