zoukankan      html  css  js  c++  java
  • 高放的c++学习笔记之lambda表达式

    lambda表达式:可以让代码看起来更整洁,有些结构简单且用的次数少的函数可以用lambda表达式替代,

    通常结构是这样的[捕获列表](参数列表){函数部分}

    捕获列表:

    lambda表达式如果在一个函数里面,如果想要使用函数里面的变量的话,那么必须要将使用的变量写在捕获列表里面;

    也就是说:

    void cmp(){
      int a;
      [](){return a;};
    }

    是通不过编译的

    只能这样:

    void cmp(){
      int a;
      [](){return a;};
    }

    如果lambda表达式在类的里面的话,原则如上。

    如果表达式写在类的函数里面的话,那么是不能直接使用类里面的变量的,通过试验。

    经过捕获,表达式只能使用上一层里面的变量。

    全局变量随便使用。

    如果不在捕获列表里面声明的话,lambda表达式不能使用任何局部变量。

    捕获列表有以下几种:

    值捕获都不可以改变变量

    []          空捕获,不能使用函数里面的变量。

    [names]       names是逗号分割的捕获类表。

    [&]          隐式捕获,所有捕获都以引用的方式。

    [=]          隐式捕获,拷贝所有实体的值。

    [&, names]      names自定义捕获,其他的以引用方式捕获。

    [=,names]       names自定义捕获,其他的值捕获。

    传参列表:(相当于函数的参数列表)

    lambda表达式不允许有默认参数,也就是形参和实参的数量必须相等。

  • 相关阅读:
    Xor 2020CCPC网络赛 数位DP
    D. Cleaning 前缀后缀
    Sum of Log ICPC上海区域赛 数位dp 双线程
    Sky Garden icpc上海站 2020
    Gitignore 2020 上海icpc区域赛
    单片机常用调试的接口有哪些
    基于单片机和温度传感器实现专用测温系统的设计
    大神带你如何正确认识它
    linux的top命令详解
    基于S3C44B0XARM7处理器的嵌入式统扩展USB接口的技术方案
  • 原文地址:https://www.cnblogs.com/icodefive/p/4916912.html
Copyright © 2011-2022 走看看