C++11中的Lambda


C++ 11 中支持了Lambda,然后C++14, C++20中又有所增加.

本着实用的目的,这里就简单的说下C++11中Lambda的基本用法.

语法

有以下几种形式:

[ captures ] ( params ) -> ret { body }

[ captures ] ( params ) { body }

[ captures ] { body }

其中captures表示捕获的外部变量,params是形式参数,ret是返回值的类型,body是表达式.

简单的demo

auto lambda1 = [](int a, int b) -> int {
    return a + b;
};

auto lambda2 = [] {
    std::cout << "Hello World" << std::endl;
};

auto lambda3 = [](int a, int b) {
    std::cout << a + b << std::endl;
};


int main(){
    std::cout << lambda1(1,2) << std::endl;
    lambda2();
    lambda3(2,3);


    int x = 32;
    auto lambda4 = [x](int y) -> int {
        return x + y;
    };
    std::cout << lambda4(12) << std::endl;

    auto f = lambda2;
    f();

    return 0;
}

文章作者: 姜康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 姜康 !
评论
 上一篇
Flutter在Android上的启动流程 Flutter在Android上的启动流程
目前Flutter项目更新还是比较频繁的,这里主要是看主要的的流程,主要的代码,一些细枝末节或者与主题无关的代码均已忽略. 本文源码基于Flutter Engine master分支,updated 2020/12/07 基本流程 初始
2020-12-10
下一篇 
Flutter Engine编译和源码阅读 Flutter Engine编译和源码阅读
Flutter Engine的编译以及源码阅读其实挺简单的,只要按照官方文档的步骤来,一般都不会有什么问题.这里记录一下编译的流程,以及源码查看的一些配置和问题. 下载 下载depot_tools,并配置环境 git clone https
2020-12-07
  目录