当前位置:网站首页>【 lambda表达式的使用】
【 lambda表达式的使用】
2022-08-06 05:27:00 【人间小客】
lambda表达式的使用
本质上会被翻译成一个类
C++可以调用的对象
类
函数指针
仿函数
lambda表达式
基本组成部分
参数与函数体
返回类型
捕获:针对函数体中使用的局部自动对象进行捕获
值捕获,引用捕获和混合捕获
this 捕获
初始化捕获
*this捕获
说明符:
mutable/constexpr(C++17)/consteval(C++20)…
模板形参
[capture list] (parameter list) -> return type {
function body };
举例如下:
auto x = [](int val)->float//指定返回值类型(当然也可以不用)
{
return (val>3)&&(val<10);};
[]中括号用作捕获,
静态的全局变量,不需要捕获,直接使用即可
值捕获,值捕获对数据的处理,不会溢出到表达式的外部
int y = 10;
auto x = [y] (int val) mutable{
// ++y;
return val>y;
};
cout<<x(5)<<endl;
cout<<y<<endl;
使用引用捕获,声明引用,会对最外层的改变,输出的结果也会发生变化
int y = 10;
auto x = [&y] (int val) {
++y;
return val>y;
};
cout<<x(5)<<endl;
cout<<y<<endl;
混合捕获
int y = 10;
int z =3;
auto x = [&y,z] (int val) {
++y;
return y>z;
};
cout<<x(5)<<endl;
cout<<y<<endl;
使用等号,可以进行值捕获
使用&,表示使用的引用捕获
或者混合捕获也可以
那么如何在结构体中,使用this 捕获
struct Str{
auto fun(){
int val =3;
auto lam = [val,this](){
return val>x;
};
return lam();
}
int x;
};
int main(){
Str s;
s.fun();
}
边栏推荐
猜你喜欢

QT自定义安装包

WebRTC新增FFmpeg视频编解码模块

When a man knows why he lives, he can endure any kind of life

C语言和其他高级语言的最大的区别是什么?

6.18上午CVPR直播 | 清华三维视觉研究团队:三维人体重建与渲染、高精度人脸生成

R软件的下载与更新

SourceTree 常用技巧

卷积神经网络笔记2

Convolutional Neural Network Notes 2

About the printf function Warning: format string is not a string literal (potentially insecure)!
随机推荐
十五、一起学习Lua 协同程序(coroutine)
XCode download link
QT5.14 realizes simple user login system
十三、一起学习Lua 模块与包
十、 一起学习Lua 数组
新朋老友齐聚首,共话「图形学」未来 | 将门行动派特别直播企划,就在7月6日晚!
libcurl+openssl库交叉编译
利用预训练语言模型ERNIE提供文本相似度(语义匹配)计算服务的简单实例
卷积神经网络笔记2
Professional and technical personnel continuing education exam questions
GFS分布式文件系统
CW008A Copper alloy
Qt教程(3) : 信号与槽
利用R解决常见的数据匹配问题
Qt智能指针
C#和DL-EPI通信
Qt+YOLOv4实现目标检测
ZLMediaKit视频推流和播放步骤
Deep Learning Gesture Classification Based on Myoelectric Signals (sEMG)-2
MAE入局多模态分析,CMU联合微软发布仅需文本监督的视觉语言新模型VLC