C++11lambda表达式精讲

Posted 多一些不为什么的坚持

tags:

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

lambda 表达式的概念和基本用法

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

[ capture ] ( params ) opt -> ret  body; ;

 

其中 capture 是捕获列表,params 是参数表,opt 是函数选项,ret 是返回值类型,body是函数体。

因此,一个完整的 lambda 表达式看起来像这样:

auto f = [](int a) -> int  return a + 1; ;
std::cout << f(1) << std::endl;  // 输出: 2

可以看到,上面通过一行代码定义了一个小小的功能闭包,用来将输入加 1 并返回。

在 C++11 中,lambda 表达式的返回值是通过前面介绍的《C++返回值类型后置》语法来定义的。其实很多时候,lambda 表达式的返回值是非常明显的,比如这个例子。因此,C++11 中允许省略 lambda 表达式的返回值定义:

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

  

 

参考资料:

C++11 lambda表达式精讲 (biancheng.net)

 

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

C++11新特性精讲(多线程除外)

C++11 ——— lambda表达式

C++11 ——— lambda表达式

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

C++11 lambda 表达式解析

C++11 lambda 表达式解析