c++ 基础题目lambda

server/2025/4/2 5:46:04/

1. auto lambda = [](double x) { return static_cast<int>(x); }; 是 匿名函数对象 ,不可直接声明

a.可以赋值给一个与其类型兼容的 std::function 类型的对象 std::function<int(int, int)> lambda = [](int x, int y) { return x + y; };

 b.使用具体的 lambda 类型(函数指针) int (*lambda1)(int, int) = [](int x, int y) { return x + y; };

c. 推导类型decltype([](int x, int y) { return x + y; }) lambda = [](int x, int y) { return x + y; };

decltype 用于推导一个表达式的类型,而不是像 auto 那样推导变量的类型

int x = 5;
double y = 2.5;
decltype(x + y) z = x + y;  // decltype(x + y) 等同于 double
std::cout << z << std::endl;  // 输出 7.5

2. 什么样的lambda不能复制给function

1. 捕获非复制对象的 lambda

std::unique_ptr<int> ptr = std::make_unique<int>(42);// 捕获了一个不可复制的对象 std::unique_ptrauto lambda = [ptr]() { return *ptr; };

std::unique_ptr<int> 是不可复制的,它的移动语义导致 lambda 无法被复制。因此,std::function 也无法复制该 lambda ,可以改为捕获指针或其他可复制的对象。

auto lambda = [ptr = std::move(ptr)]() { return *ptr; };

2.捕获了外部局部变量,并且该变量是不可复制的(例如,捕获了一个带有删除拷贝构造函数的类型),就不能将其赋值给 std::function

#include <iostream>
#include <functional>struct NonCopyable {NonCopyable() = default;NonCopyable(con

http://www.ppmy.cn/server/176842.html

相关文章

分布式唯一ID

微服务 分布式唯一主键ID生成方案_微服务主键生成-CSDN博客 uid-generator-spring-boot-starter 教程-CSDN博客 https://github.com/baidu/uid-generator/blob/master/README.zh_cn.md GitCode - 全球开发者的开源社区,开源代码托管平台

ubuntu20.04下如何防止同一类型串口设备插入USB口无法区分到底是从/dev/ttyUSB0还是/dev/ttyUSB1读取数据

设备插入电脑后,分别通过udevadm info -a -n /dev/ttyUSB0和udevadm info -a -n /dev/ttyUSB1指令查看相关USB设备的信息.从中可以看到其中一个设备位于busnum 1上,即总线1上,且位于端口3上,即devpath 3,根据这两个信息,可以有效区分该设备是插在哪个usb口上. 也可以通过lsusb …

源代码防泄密和安全上外网的关联

在数字化办公的时代&#xff0c;企业员工需要频繁访问互联网以获取信息、进行沟通和协作。然而&#xff0c;互联网的开放性也带来了诸多安全风险&#xff0c;如恶意软件、网络攻击、数据泄露等。SPN沙盒作为一种先进的安全上网解决方案&#xff0c;为企业提供了一种安全、可控的…

打破煤矿通信屏障,无线系统赋能生产安全与智能进阶

项目背景 在煤矿行业智能化转型的浪潮中&#xff0c;七台河矿业局积极回应国家煤矿智能化建设的号召&#xff0c;采取了具有前瞻性的战略举措——在七台河地区的煤矿部署了“井上井下”无线覆盖与广播一体化系统。此举旨在消除井上与井下之间的通信障碍&#xff0c;加强矿业局与…

Redis 在windows下的下载安装与配置

参考链接:https://developer.aliyun.com/article/1395346 下载 Redis 访问 Redis 下载地址&#xff1a;https://github.com/tporadowski/redis/releases 下载 Redis 时&#xff0c;你可以选择 ZIP 包或 MSI 安装&#xff1a; ZIP包&#xff1a;需要手动解压、初始化、配置和…

Apache Tomcat 7.0.41安装指南 (附安装包)

安装步骤&#xff1a; 下载&#xff1a;Tomcat下载链接&#xff1a;https://pan.quark.cn/s/c1e26e2705b6。 解压&#xff1a;将下载的文件解压到你选择的目录。 配置&#xff1a;设置 CATALINA_HOME 环境变量&#xff0c;指向 Tomcat 安装目录。 启动&#xff1a;运行 bin …

HTML5 drag API实现列表拖拽排序

拖拽API&#xff08;Drag and Drop API&#xff09;是HTML5提供的一组功能&#xff0c;使得在网页上实现拖放操作变得更加简单和强大。这个API允许开发者为网页元素添加拖拽功能&#xff0c;用户可以通过鼠标将元素拖动并放置到指定的目标区域。 事件类型 dragstart&#xff1…

Stream 流中 flatMap 方法详解

&#x1f3af; 1. flatMap() 到底是啥&#xff1f; flatMap() 是 Stream 里的中间操作&#xff0c;它的作用可以分两步理解&#xff1a; 第一步&#xff1a;对流里的每个元素&#xff0c;先**映射&#xff08;转换&#xff09;**成一个 Stream。第二步&#xff1a;把多个子流…