C++Lambda Expression 的学习笔记
Posted songyuc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++Lambda Expression 的学习笔记相关的知识,希望对你有一定的参考价值。
1. Lambda 捕获 [Doc]
[=]
: 自动复制捕获
[&]
: 自动引用捕获
捕获时实现完美转发
在进行类内捕获时,*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 的学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
Expression.Call 在简单的 lambda 表达式中。可能吗?