C++Lambda Expression 的学习笔记

Posted songyuc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++Lambda Expression 的学习笔记相关的知识,希望对你有一定的参考价值。

1. Lambda 捕获 [Doc]

[=]: 自动复制捕获

[&]: 自动引用捕获

捕获时实现完美转发

示例:Cpp_lambda_perfect_forward

在进行类内捕获时,*this要优于this

因为*this在解引用之后,会复制当前的类对象,于是不容易造成悬挂指针(空指针)的问题;

2. 形参声明

与一般函数不同,lambda表达式允许使用auto来声明形参类型,(since C++14)

auto lam = [] (auto x) 
    return x + 1;
;

3. 使用lambda表达式实现分支初始化(没有使用函数)

#include <iostream>
#include <random>
#include <functional>

int main() 
    std::random_device rd;

    int x = std::invoke([&] 
        if (rd() % 2 == 1)
            return 0;
        else
            return 1;
    ); // 或者用括号调用lambda表达式也可以
    std::cout << x;

以上是关于C++Lambda Expression 的学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

python's lambda expression

java Lambda expression

Expression.Call 在简单的 lambda 表达式中。可能吗?

Expression.Compile 与 Lambda、直接与虚拟调用的性能

python学习2 lambda表达式

使用 Linq.Expression 访问具有动态 lambda 的嵌套属性