C++11:lambda表达式详细介绍

前言

Lambda(匿名函数)表达式是C++11最重要的特性之一,lambda来源于函数式编程的概念,也是现代编程语言的一个特点。

优点如下:

  • 声明式编程风格:就地匿名定义目标函数或函数对象,有更好的可读性和可维护性。
  • 简洁:不需要额外写一个命名函数或函数对象,,避免了代码膨胀和功能分散。
  • 更加灵活:在需要的时间和地点实现功能闭包。

概念及基本用法

lambda表达式定义了一个匿名函数,并且可以捕获一定范围内的变量。语法形式如下:

[ capture ] ( params ) opt -> ret { body; };
  • capture:捕获列表
  • params:参数列表
  • opt:函数选项
  • ret:返回值类型
  • body:函数体

一个完整的lambda表达式是这样:

auto f = [](int a) -> int {return a + 1;};
cout << f(3) << endl;  //输出4

以上定义了一个完整的lambda,但是在实际的使用中,可以省略其返回值的定义,编译器会根据return语句进行自动推导返回值类型。
省略过后如下:

auto f = [](int a) {return a + 1;};

需要注意的是,初始化列表不能用于返回值的自动推导:

猜你喜欢

转载自blog.csdn.net/shengyin714959/article/details/130329776