当前位置: 首页 > 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.jsqmd.com/news/16111/

相关文章:

  • 智慧城市基础设施漏洞分析与国家安全影响
  • ️ PostgreSQL 数据类型
  • CSP-J/S 2025 第一轮游记
  • 【汇编和指令集 . 第2025 .10期】万般皆为投影
  • 小作业 12
  • Python 潮流周刊#123:你可能不需要单例模式
  • 一位焦虑的普通二本软件工程的学生
  • C++类的运算符重载
  • CSP-S模拟34/2025多校冲刺CSP模拟赛6
  • Java学习通互评5
  • 运筹学在供应链优化中的实际应用
  • WebGL学习及项目实战(第03期:绘制多个点,线,面)
  • ozon定制尺寸和重量
  • CF 359D. Pair of Numbers
  • 2025多校CSP模拟赛6
  • godot3D节点本身的偏转数值错误竟会导致空间移动穿模??!
  • Kafka面试精讲 Day 24:Spring Kafka构建实战
  • 重新安装trea cn
  • 题解:qoj7938 Graph Race
  • java中的初等函数
  • 【机器人】SG-Nav 分层思维链H-CoT | 在线分层3D场景图 | 目标导航 - 教程
  • 专用硬件神经网络优化技术解析
  • 学习逆向的背景知识(自用)
  • Linux-网络安全私房菜(二)
  • AI元人文:社区调解的数字剧场
  • 详细介绍:【探寻C++之旅】第十六章:unordered系列的认识与模拟实现
  • Dubbo入门-Dubbo的快速使用
  • 15 接口的介绍
  • 【未完待续】MkDocs 部署安装教程