卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章46229本站已运行3116

C++ 函数lambda表达式的写法规范是什么?

c++++ 函数 lambda 表达式的写法规范语法为:[capture](parameters) -> return_type { // 函数体},其中 capture 为捕获外部变量,parameters 为函数参数,return_type 为函数返回值类型。其类型根据捕获列表和参数列表分为:捕获所有外部变量,无参数:auto 类型;捕获特定外部变量,无参数:auto 类型(可缩小);无捕获,有参数:function 类型。lambda 表达式用于创建临时函数对象,可以将其赋值给变量或函数指针,或直接作为参数传递。

C++ 函数lambda表达式的写法规范是什么?

C++ 函数 Lambda 表达式的写法规范

语法:

[capture](parameters) -> return_type {
  // 函数体
}

其中:

  • capture:捕获外部变量,可选,默认为 [&](捕获所有外部变量)
  • parameters:函数参数,可选
  • return_type:函数返回值类型,可选

Lambda 表达式类型:

Lambda 表达式属于匿名函数类型。其类型取决于捕获列表和参数列表:

  • 捕获所有外部变量,无参数:auto 类型
  • 捕获特定外部变量,无参数:auto 类型(可缩小)
  • 无捕获,有参数:function 类型

使用规范:

  • Lambda 表达式用于创建临时函数对象。
  • 可将其赋值给变量或函数指针,或直接作为参数传递。
  • Lambda 表达式中可访问捕获的外部变量,但不能修改它们(除非通过引用捕获)。
  • Lambda 表达式中的 this 指针指向创建它们的上下文。

实战案例:

// 捕获所有外部变量,无参数
auto lambda1 = []() {
  // 可以访问外部变量
  std::cout << "Lambda 1: " << x << std::endl;
};

// 捕获特定外部变量,无参数
int x = 10;
auto lambda2 = [x]() {
  // 只可以访问捕获的外部变量 x
  std::cout << "Lambda 2: " << x << std::endl;
};

// 无捕获,有参数
auto lambda3 = [](int y) {
  // 没有捕获外部变量,y 为函数参数
  std::cout << "Lambda 3: " << y << std::endl;
};

int main() {
  lambda1();
  lambda2();
  lambda3(20);

  return 0;
}

输出:

Lambda 1: 10
Lambda 2: 10
Lambda 3: 20
卓越飞翔博客
上一篇: Golang函数的优势和劣势是什么?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏