c++ 基础题目lambda

embedded/2025/3/20 3:37:19/

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/embedded/174035.html

相关文章

Java List 接口的核心 API

1. 添加元素 方法&#xff1a; boolean add(E e)&#xff1a;将元素添加到列表末尾。 void add(int index, E element)&#xff1a;将元素插入到指定位置。 boolean addAll(Collection<? extends E> c)&#xff1a;将集合中的所有元素添加到列表末尾。 boolean addA…

Deepseek API+Python测试用例一键生成与导出-V1.0.2【实现需求文档图片识别与用例生成自动化】

在测试工作中&#xff0c;需求文档中的图片&#xff08;如界面设计图、流程图&#xff09;往往是测试用例生成的重要参考。然而&#xff0c;手动提取图片并识别内容不仅耗时&#xff0c;还容易出错。本文将通过一个自研小工具&#xff0c;结合 PaddleOCR 和大模型&#xff0c;自…

三月九次前端面试复盘:当场景题成为通关密钥

三月初集中面了包括字节、美团、滴滴在内的9家公司&#xff0c;经历7场技术面2场Leader面后&#xff0c;发现如今的面试逻辑已发生根本转变。这里分享真实经历与题目&#xff0c;供近期求职者参考。 一、面试形态变化&#xff1a;从理论背诵到实战推演 1. 八股文边缘化&#…

python web开发flask库安装与使用

要在 Python 中使用 Flask 进行 Web 开发&#xff0c;首先需要安装 Flask 库。Flask 是一个轻量级的 Web 框架&#xff0c;它使开发者能够快速构建网站或 web 服务。下面是安装 Flask 和创建一个简单的 Flask 应用程序的基本步骤。 安装 Flask 确保您的环境中已经安装了 Pyth…

SpringBoot使用HibernateValidation

概述 Bean Validation源于JSR-303 &#xff0c;而JSR303是 Java EE 6 中的一项子规范。JSR349、JSR380是其升级版&#xff0c;添加了一些新的特性。Oracle公司传统艺能&#xff0c;一流公司定标准&#xff0c;它们只定义了一些校验注解&#xff08;Constraint&#xff09;&…

vue 仿deepseek前端开发一个对话界面

后端&#xff1a;调用deepseek的api&#xff0c;所以返回数据格式和deepseek相同 {"model": "DeepSeek-R1-Distill-Qwen-1.5B", "choices": [{"index": 0, "delta": {"role": "assistant", "cont…

Blender4.3雕刻笔刷简介

Blender4.3雕刻笔刷简介 添加/减去笔刷(Add/Subtract Brushes)对比度笔刷(Contrast Brushes) 添加/减去笔刷(Add/Subtract Brushes) 名称英文名称快捷键描述官方文档描述示意图球形笔刷Blob画一个圆圆突起的球绘制时放大网格。有助于在笔触上实现额外的膨胀效果。黏塑Clay更加…

MySQL启动报错/var/lib/mysql‘ for UNIX socket file don‘t exists.

错误呈现 解决办法 启动MySQL服务时&#xff0c;会优先在/etc/目录下查找my.cnf&#xff0c;所以把这个文件重命名或删除重启服务就好了。 我先查看下我的 /etc/my.cnf 文件 删除 my.cnf 文件 rm -rf my.cnf 启动MySQL service mysql start 这样就解决了 systemctl start my…