当前位置: 首页 > news >正文

C++ lamda

1 lamada 的函数指针存在哪里?需要通过分析编译后的二进制;

2 捕获了什么? 为什么捕获?捕获的范围是什么? 捕获的生命周期是什么?

lambda 定义匿名函数,使得代码更加灵活简洁;

lambda表达式格式:

auto func = [capture] (params) opt -> ret { func_body; };

func:lambda 表达式的名字,作为一个函数使用;

capture:捕获列表;

params:参数列表;

opt:函数选项(mutable, noexcept之类);

ret:返回值类型,如果不写,编译器根据返回值自动推导;

func_body:函数体。

capture 格式:

[] //未捕获任何变量。试图在lambda内使用任何外部变量都是错误的;

[&] //用到的任何外部变量都隐式按引用捕获

[=] //用到的任何外部变量都隐式按值捕获

[x, &y] //x 按值捕获, y 按引用捕获.

[&, x] //x显式地按值捕获. 其它变量按引用捕获

[=, &z] //z按引用捕获. 其它变量按值捕获

[this]:通过引用捕获当前对象(其实是复制指针)

[*this]:通过传值方式捕获当前对象;

#include <iostream>  
#include <string>  
#include <functional>int main() {  int va = 1, vb = 2, vc = 3;//auto lf1 = [](){return va;};auto lf2 = [=](){return vb;};auto lf3 = [=](){return va++;};return 0;  
}

编译错误信息:

 06 g++ lambda.cpp   
lambda.cpp: In lambda function:
lambda.cpp:10:29: error: increment of read-only variable ‘va’10 |     auto lf3 = [=](){return va++;};

好问题:auto lf3 = [=](){return va++;}; 为什么会报错;

每天在工作之余坚持研究一个小问题,感觉时间还是有点紧,只能切分了。

参考文档:

c++ lambda_c++ lamda-CSDN博客

C ++ Lambda表达式详解_c++ lamda表达式-CSDN博客

http://www.lryc.cn/news/383120.html

相关文章:

  • Linux_应用篇(27) CMake 入门与进阶
  • 51单片机STC89C52RC——8.1 8*8 LED点阵模块(点亮一个LED)
  • 2024最新免费版轻量级Navicat Premium Lite 下载和安装教程
  • PHP+laravel 生成word
  • redis集群简单介绍及其搭建过程
  • linux桌面运维----第五天
  • 【SQL Server数据库】简单查询
  • Docker 从入门到精通(大全)
  • 基于JSP的在线教育资源管理系统
  • 在java中代理http请求,如何避免陷入循环?
  • 国内镜像源网址
  • 合适的智能猫砂盆到底怎么挑?开放式封闭式一次说清!
  • 阿里云开启ssl证书过程记录 NGINX
  • C语言程序设计 9.37 调用随机函数为5x4的矩阵置 100以内的整数,输出该矩阵,求出每行元素之和,并把和的最大的那一行与第一行的元素对调
  • Webpack: 借助 Babel+TS+ESLint 构建现代 JS 工程环境
  • 孩子不想上学,父母应如何教育?“强迫教育”会激起孩子反抗心理
  • Python深度学习技术
  • ECharts 雷达图案例002 - 诈骗性质分析
  • 想远程控制手机,用哪个软件好?
  • 数字内容“遍地开花”,AI技术如何创新“造梦”?
  • MySQL集群如何实现读写分离
  • 一分钟剪辑1000条视频的云微客矩阵,怎么做到的?
  • 简单案例比较Lambda和方法引用的差别
  • 10 个最佳 AI 代码生成器
  • Eureka服务发现机制解析:服务实例的唯一标识
  • 操作系统实训复习笔记(基于命名管道与信号的进程间通信)
  • 数字化转型第三步:数字化业务创新与发展,提升收入和利润
  • SSM爱心捐赠物资维护系统-计算机毕业设计源码09536
  • ​中国9大流域地图SHP数据
  • android Switch/case with R.id.XXXX in android doesn‘t work 错误: 需要常量表达式解决方案