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

C++lambda表达式简单笔记

lambda表达式语法

#include <iostream>int main(int argc, char* argv[])
{/*** 1. 基本形式与语法*///如果没有传入参数,参数列表可以省略auto lambda1 = []() { std::cout << "Hello, World !" << std::endl; };auto lambda2 = [](int x, int y) -> int //返回参数可使用尾置返回语法{if (x > y)return 1;else if (x < y)return -1;elsereturn 0;};/*** 输出:* Hello, World !*/lambda1();/*** 输出:* -1*/std::cout << lambda2(1, 2) << std::endl;/*** 输出:* 1*/std::cout << lambda2(2, 1) << std::endl;/*** 输出:* 0*/std::cout << lambda2(1, 1) << std::endl;return 0;
}

捕获

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>int main(int argc, char* argv[])
{/*** lambda表达式捕获外部变量示例*/std::vector<int> vec{ 1,2,3,4,5,6,7,8,9,10 };std::string str;//&str为引用捕获,在函数内部可以被修改std::for_each(vec.begin(), vec.end(), [&str](int n) {str.append(std::to_string(n)).append(",");});str.pop_back();/*** 输出:* 1,2,3,4,5,6,7,8,9,10*/std::cout << str << std::endl;//argc为值捕获(拷贝),该变量在函数内部修改后不会影响外部变量std::for_each(argv, argv + argc, [argc](char* args) {/*** 输出命令行参数*/std::cout << args << std::endl;});/*** 关于其他捕获语法:* [=]: 所有外部变量的捕获均为值捕获(拷贝)* [&]: 所有外部变量的捕获均为引用捕获* [=, var...]: var以引用捕获,其他外部变量以值捕获* [&, var...]: var以值捕获,其他外部变量以引用捕获*/return 0;
}

其他

当lambda表达式不使用[]捕获时,其表现与函数指针相同;如果使用了[]捕获,则会变成带有成员变量(引用或拷贝)和重载operator()函数运算符的类,所以将lambda表达式代入参数为函数指针的函数时,不能使用[]捕获。

http://www.hskmm.com/?act=detail&tid=33891

相关文章:

  • 智慧城市基础设施漏洞分析与国家安全影响
  • ️ PostgreSQL 数据类型
  • CSP-J/S 2025 第一轮游记
  • 【汇编和指令集 . 第2025 .10期】万般皆为投影
  • 小作业 12
  • Python 潮流周刊#123:你可能不需要单例模式
  • Python 潮流周刊#122:Python 3.14 来了,速度如何?
  • 机器学习在视频质量检测中的技术应用
  • 基于博客园和xmlrpc的Typora图片上传脚本
  • 一位焦虑的普通二本软件工程的学生
  • C++类的运算符重载
  • 10.18 CSP-S模拟34/2025多校CSP模拟赛6 改题记录
  • 微软Office LTSC 2021(KpoJIuK直装版)x64 v16.0.14334.20344 10月版
  • 征程 6 | 征程 6 工具链如何支持 Matmul/Conv 双 int16 输入量化?
  • 结对项目:自动生成小学四则运算题目的命令行程序
  • 做题技巧与结论证明
  • 1. 两数之和
  • CSP-S模拟34/2025多校冲刺CSP模拟赛6
  • PostgreSQL 逻辑结构
  • 随机数技术
  • Java学习通互评5
  • 卡车厂实习第三天
  • 第六周作业---定时器
  • 『普及』浅谈图的基础
  • 被C语言链表折磨的一天 Σ( △ |||)︴
  • 运筹学在供应链优化中的实际应用
  • P6715 [CCO 2018] Fun Palace 题解
  • WebGL学习及项目实战(第03期:绘制多个点,线,面)
  • CF 359D. Pair of Numbers