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

C++:lambda匿名函数

匿名函数,可以理解为没有名字的函数

语法格式:

[外部变量访问方式说明符](参数)mutable->返回值类型
{函数体;
};

这其中有一些注意:

1.[ ]不可省略,内部表明函数体中可以使用哪些外部变量

2.()和参数在不需要参数时可一起省略

3.mutable可省略,但要是使用的话()不能省略,对于以值传递方式引入的外部变量,若无mutable则不允许修改(此方式修改的并不是真正外部变量的值)

4.若函数体内只有一个return语句或者返回值类型为void,则 ->返回值类型 可以省略

外部变量格式功能
[ ]空括号表示当前 lambda 匿名函数中不导入任何外部变量
[=]只有一个 = 等号,表示以值传递的方式导入所有外部变量
[&]只有一个 & 符号,表示以引用传递的方式导入所有外部变量
[val1,val2,...]表示以值传递的方式导入 val1、val2 等指定的外部变量,多个变量之间没有先后次序
[&val1,&val2,...]表示以引用传递的方式导入 val1、val2 等指定的外部变量,多个变量之间没有先后次序
[val,&val2,...]值传递和引用传递混合使用,变量之间没有先后次序
[=,&val1,...]表示除 val1 以引用传递的方式导入外,其它外部变量都以值传递的方式导入
[this]表示以值传递的方式导入当前的 this 指针

以代码为例:

#include<iostream>
using namespace std;int main()
{int a = 10;int b = 20;auto pfun = []{cout << "AA" << endl; };auto pfun = [=]()->int {return a + b; };//外部的a,b复制进来auto pfun = [=]()mutable->int {a = 100; b = 200; return a + b; };//外部a b都不改auto pfun = [&]()->int {a = 100; b = 200; return a + b; };//外部a b值都改auto pfun = [&a,b]()mutable->int {a = 100; b = 200; return a + b; };//外部a改b不改pfun();或cout<<pfun()<<endl;//对于returnreturn 0;
}
#include<iostream>
#include<list>
#include<algorithm>//算法头文件
using namespace std;int main()
{list<int>lst;lst.push_back(1);lst.push_back(2);lst.push_back(3);for_each(lst.begin(), lst.end(), [](int a) {cout << a << endl; });return 0;
}

http://www.xdnf.cn/news/9752.html

相关文章:

  • 【VSCode-Qt】Docker远程连接的项目UI文件在 VSCode 上无法预览
  • STM32F407VET6学习笔记8:UART5串口接收中断的Cubemx配置
  • Spring 面经
  • PnP(Perspective-n-Point)算法 | 用于求解已知n个3D点及其对应2D投影点的相机位姿
  • 5.LoadBalancer负载均衡服务调用
  • 【测试】Bug和用例
  • 视觉分析开发范例:Puppeteer截图+计算机视觉动态定位
  • 国内连接速度较快的常用 Yum 源及其具体配置方法
  • mysql一主多从 k8s部署实际案例
  • 【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器
  • 什么是VR全景相机?如何选择VR全景相机?
  • http传输协议的加密
  • 黑马点评项目02——商户查询缓存(缓存穿透、缓存雪崩、缓存击穿)以及细节
  • 有关于常量的一节知识
  • JAVA学习 DAY1 初识JAVA
  • 生成式引擎的认知霸权:为什么传统内容失效?
  • 【AI非常道】二零二五年三月,AI非常道
  • 黑马程序员C++核心编程笔记--1 程序的内存模型
  • AniGS - 基于单张图像的动态高斯化身重建
  • 62、【OS】【Nuttx】编码规范解读(十)
  • 电缆中性点概念
  • webstrorm 提示(This file does not belong to the project)此文件不属于该项目
  • 深度学习-模型训练的相关概念
  • 【spring】spring中的retry重试机制; resilience4j熔断限流教程;springboot整合retry+resilience4j教程
  • java中自定义注解
  • WildDoc:拍照场景下的文档理解——数据真香
  • ETL怎么实现多流自定义合并?
  • 信奥之计算原理与排列组合
  • 人工智能在智慧物流中的创新应用与未来趋势
  • mybatis plus的源码无法在idea里 “download source“