C++lambda表达式

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++lambda表达式相关的知识,希望对你有一定的参考价值。

文章目录

Lambda表达式

Lambda表达式是C++11引入的一种匿名函数的语法。它的基本语法如下:

[capture list] (parameter list) -> return type

    // 函数体

其中,capture list是一个可选的捕获列表,用于捕获外部的变量;parameter list是一个可选的参数列表,用于定义函数的形参;return type是一个可选的返回类型,用于指定函数的返回值类型;函数体则是实际的函数实现。

示例

获取CameraInfos中CameraID字段的值为camId的元素:

const auto it = std::find_if(CameraInfos.begin(), CameraInfos.end(),
											 [camId](const auto &info)
											  return info.CameraID == camId; );

在上面代码中,lambda表达式的语法是这样的:

[camId](const auto &info) return info.CameraID == camId; 

这个lambda表达式的捕获列表只包含一个变量camId,表示捕获外部的变量camId。这个变量在lambda表达式中的作用域只在lambda表达式内部。

参数列表包含一个参数const auto &info,表示容器中的每一个元素。其中const auto &是一个占位符类型,表示编译器将根据函数调用时传入的参数类型来推导实际的类型。info是一个参数名,用于在函数体内部引用这个参数。

函数体是一个简单的条件语句,用于检查参数info的成员变量CameraID是否等于外部变量camId的值。如果相等,则返回true,表示满足查找条件;否则返回false,表示不满足查找条件。

以上是关于C++lambda表达式的主要内容,如果未能解决你的问题,请参考以下文章

C++11 ——— lambda表达式

C++11 ——— lambda表达式

C++lambda表达式

一文读懂C++11的Lambda表达式的用法与原理

C#005.Lambda表达式

C#005.Lambda表达式