C++ Lambda 表达式
Lambda 表达式的完整语法如下:
[capture](parameters) mutable -> return_type { body }
[capture]
(捕获列表):指定外部变量如何被 Lambda 表达式捕获(按值或按引用)。
(parameters)
(参数列表):类似普通函数的参数,定义 Lambda 接受的输入。
mutable
(可选):允许在按值捕获时修改捕获的变量(默认按值捕获是只读的)。
-> return_type
(返回类型,可选):显式指定返回类型,通常由编译器推导。
{ body }
(函数体):Lambda 的实现逻辑。
捕获列表决定了 Lambda 如何访问外部作用域的变量。捕获方式有以下几种:
1.按值捕获 [x]
外部变量被复制到 Lambda 内部,Lambda 持有该变量的副本。
int x = 10;
auto func = [x]() { return x * 2; }; // x 是副本
std::cout << func() << "\n"; // 输出 20
x = 20;
std::cout << func() << "\n"; // 依然输出 20,因为 func 内部的 x 是副本
按值捕获默认只读,使用 mutable
允许修改副本,但不会影响外部变量。
int x = 10;
auto func = [x]() mutable { x += 1; return x; };
std::cout << func() << "\n"; // 输出 11
std::cout << x << "\n"; // 输出 10,外部 x 不变
2.按引用捕获 [&x]
Lambda 直接引用外部变量,修改 Lambda 内部的变量会影响外部变量。如果外部变量被销毁(例如离开作用域),Lambda 引用它会导致未定义行为(悬垂引用)。
示例:
int x = 10;
auto refFunc = [&x]() { return x * 2; }; // x 是引用
x = 20;
std::cout << refFunc() << "\n"; // 输出 40,因为 refFunc 引用了修改后的 x
3.全局捕获
[=]
:按值捕获所有外部变量的副本。
[&]
:按引用捕获所有外部变量。
混合捕获:可以组合,例如 [=, &x]
表示默认按值捕获,但 x
按引用捕获。
示例:
int x = 10, y = 5;
auto mixed = [=, &x]() { return x + y; }; // y 按值,x 按引用
x = 20;
std::cout << mixed() << "\n"; // 输出 25(x=20, y=5 的副本)
4.捕获 this
在类成员函数中,[this]
捕获当前对象的指针,[*this]
(C++17 起)捕获当前对象的副本。按引用捕获 [&]
隐式包含 this
。
示例:
struct Example {int x = 10;void func() {auto lambda = [this]() { return x * 2; };std::cout << lambda() << "\n"; // 输出 20}
};
5.空捕获 []
示例:
auto callback = [](int x) { std::cout << "Callback: " << x << "\n"; };
Lambda 表达式的捕获列表是 [],表示空捕获,即不捕获任何外部变量,既不是按值捕获也不是按引用捕获。[] 表示 Lambda 表达式不从外部作用域捕获任何变量。Lambda 的函数体 { std::cout << "Callback: " << x << "\n"; }
只使用了参数 x(通过函数调用传入)和全局对象 std::cout
。std::cout
是全局的,不需要捕获,而 x 是 Lambda 的参数,不是外部作用域的变量。
捕获(按值 [=] 或按引用 [&])只有在 Lambda 访问外部作用域的变量时才起作用。例如,如果 Lambda 使用了外部的 int y
,才会涉及捕获方式。
Lambda 表达式的实现原理:
Lambda 表达式实际上是编译器生成的匿名类的实例(称为闭包对象)。例如:
auto func = [x]() { return x * 2; };
编译器会生成类似以下的类:
class Lambda {int x; // 捕获的变量
public:Lambda(int x_) : x(x_) {}int operator()() const { return x * 2; } // 重载函数调用操作符,operator() 是重载的函数调用操作符,() 表示这个操作符不接受参数(空参数列表),int 是返回值类型,表示调用这个操作符会返回一个整数,const 表示这个成员函数不会修改对象的状态(x 不会被改变)。
};
调用 func()
实际上是调用这个类的 operator()
。这解释了 Lambda 为什么可以像函数一样使用。
Lambda 的常见用途:
1.标准库算法:与 <algorithm>
配合,例如 std::sort
、std::for_each
。
std::vector<int> vec = {3, 1, 4, 1, 5};
std::sort(vec.begin(), vec.end(), [](int a, int b) { return a < b; });
2.异步编程:与 std::async
或线程配合。
auto task = []() { std::cout << "Running task\n"; };
std::async(std::launch::async, task);
3.回调函数:传递给需要回调的函数。
auto callback = [](int x) { std::cout << "Callback: " << x << "\n"; };
someFunction(callback);
4.立即执行(IIFE,Immediately Invoked Function Expression):
int result = []() { return 42; }(); // 立即调用,result = 42
按引用捕获时,确保捕获的变量在 Lambda 使用时仍然有效。错误用法:
auto createLambda() {int x = 10;return [&x]() { return x; }; // 悬垂引用,x 在函数返回后销毁
}
按值捕获会复制变量,可能会增加内存开销。对于大对象,考虑按引用捕获或使用 std::move
(C++11 起支持移动捕获,C++14 增强)。
C++14 支持泛型 Lambda(auto
参数)和初始化捕获。
auto lambda = [y = 10](auto x) { return x + y; }; // 初始化捕获
在类成员函数中,Lambda 表达式可以通过 [this]
捕获当前对象的指针,或者通过 [&]
隐式捕获 this
。然而,这会导致 Lambda 持有指向对象的引用,如果对象在 Lambda 调用时被销毁,会导致未定义行为(悬垂指针)。C++17 引入了 [*this]
,允许 Lambda 按值捕获当前对象的副本,从而避免悬垂引用问题。适合需要延长对象生命周期的场景,例如异步回调或线程中。
示例:
#include <iostream>
#include <functional>struct Example {int x = 10;void createLambda() {// 使用 [*this] 捕获对象副本auto lambda = [*this]() {std::cout << "Lambda: x = " << x << "\n";// 修改 x 不影响原始对象x = 20;std::cout << "Lambda modified: x = " << x << "\n";};// 调用 Lambdalambda();// 原始对象的 x 未改变std::cout << "Original: x = " << x << "\n";}// 模拟异步回调std::function<void()> createAsyncCallback() {// 返回 Lambda,捕获 [*this]return [*this]() {std::cout << "Async callback: x = " << x << "\n";};}
};int main() {// 测试 [*this] 捕获Example obj;obj.createLambda();// 测试异步场景auto callback = obj.createAsyncCallback();// obj 销毁后,callback 仍然有效,因为它持有 obj 的副本callback();return 0;
}
输出:
Lambda: x = 10
Lambda modified: x = 20
Original: x = 10
Async callback: x = 10
在 C++11 到 C++17 中,Lambda 表达式生成的闭包类型没有默认构造函数,且不能直接赋值(即使 Lambda 是无状态的,即不捕获任何变量)。这限制了 Lambda 在某些场景下的使用,例如存储在需要默认构造或赋值的容器中。C++20 放宽了这一限制,允许无状态 Lambda(不捕获任何变量的 Lambda)具有默认构造函数和赋值操作符。便于在容器(如 std::vector
)、可选类型(如 std::optional
)或需要默认构造的场景中使用。
特点:
1.无状态 Lambda:指 Lambda 表达式不捕获任何变量([]
为空,且函数体不依赖外部变量)。
2.默认构造:C++20 允许无状态 Lambda 的闭包类型有默认构造函数,可以创建未初始化的闭包对象。
3.赋值:无状态 Lambda 可以相互赋值,因为它们的行为完全由代码定义,不依赖捕获的状态。
示例:
#include <iostream>
#include <vector>
#include <optional>int main() {// 定义一个无状态 Lambda,lambda 不捕获任何变量([]),因此是无状态的,行为完全由函数体 { return 42; } 定义。auto lambda = []() { return 42; };// 默认构造无状态 Lambda(C++20),decltype(lambda) defaultLambda; 创建一个默认构造的闭包对象,行为与 lambda 相同。decltype(lambda) defaultLambda; // 默认构造std::cout << "Default constructed Lambda: " << defaultLambda() << "\n";// 赋值(C++20),assignedLambda = lambda; 将 lambda 的行为复制到 assignedLambda,这是 C++20 新增的功能。decltype(lambda) assignedLambda;assignedLambda = lambda; // 赋值操作std::cout << "Assigned Lambda: " << assignedLambda() << "\n";// 存储在容器中,std::vector 和 std::optional 可以存储无状态 Lambda,因为它们支持默认构造和赋值。std::vector<decltype(lambda)> lambdaVector(3); // 默认构造 3 个 Lambdafor (const auto& l : lambdaVector) {std::cout << "Vector Lambda: " << l() << "\n";}// 使用 std::optionalstd::optional<decltype(lambda)> optionalLambda;optionalLambda = lambda; // 赋值if (optionalLambda) {std::cout << "Optional Lambda: " << optionalLambda.value()() << "\n";}return 0;
}
输出:
Default constructed Lambda: 42
Assigned Lambda: 42
Vector Lambda: 42
Vector Lambda: 42
Vector Lambda: 42
Optional Lambda: 42
如果 Lambda 捕获变量(有状态 Lambda),则无法使用默认构造或赋值,因为它们的行为依赖捕获的变量。
int x = 10;
auto statefulLambda = [x]() { return x; };
decltype(statefulLambda) defaultLambda; // 错误:无默认构造函数
statefulLambda = statefulLambda; // 错误:无赋值操作符
相关文章:
C++ Lambda 表达式
Lambda 表达式的完整语法如下: [capture](parameters) mutable -> return_type { body }[capture](捕获列表):指定外部变量如何被 Lambda 表达式捕获(按值或按引用)。 (parameters)(参数列…...
MATLAB 中的图形绘制
一、线图 plot 函数用来创建x和y值的简单线图。 x 0 : 0.05 : 30; %从0到30,每隔0.05取一次值 y sin(x); plot(x,y,LineWidth,2) %若(x,y,LineWidth,2)可变粗 xlabel("横轴标题") ylab…...
深度解析 Kubernetes 配置管理:如何安全使用 ConfigMap 和 Secret
目录 深度解析 Kubernetes 配置管理:如何安全使用 ConfigMap 和 Secret一、目录结构二、ConfigMap 和 Secret 的创建1. 创建 ConfigMapconfig/app-config.yaml:config/db-config.yaml: 2. 创建 Secretsecrets/db-credentials.yaml:…...
【UVM项目实战】异步fifo—uvm项目结构以及uvm环境搭建
本文章同步到我的个人博客网站:ElemenX-King:【UVM项目实战】异步fifo—uvm项目结构以及uvm环境搭建 希望大家能使用此网站来进行浏览效果更佳!!! 目录 一、异步FIFO1.1 异步FIFO的定义1.2 亚稳态1.3 异步FIFO关键技术…...
【含文档+PPT+源码】基于SpringBoot+Vue的移动台账管理系统
项目介绍 本课程演示的是一款 基于SpringBootVue的移动台账管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该…...
C语言——函数
C语言——函数 函数的概念 函数:也叫子程序。C语言中的函数就是一个完成某项特定任务的一小段代码。C语言函数分类: 按照用户使用:库函数,自定义函数 按照参数的形式:无参函数,有参函数 按照是否有返回值…...
网络安全 | F5 WAF 黑白名单配置实践指南
关注:CodingTechWork 引言 在现代网络安全架构中,F5 Web Application Firewall (WAF) 是保护 Web 应用免受攻击的重要工具。F5 WAF 提供了强大的黑白名单功能,结合 Data Group 和 iRules,可以实现更灵活、更高效的流量控制策略。…...
黑马 redis面试篇笔记
redis主从 version: "3.2"services:r1:image: rediscontainer_name: r1network_mode: "host"entrypoint: ["redis-server", "--port", "7001"]r2:image: rediscontainer_name: r2network_mode: "host"entrypoint:…...
报错_NoSuchMethodException: cn.mvc.entity.User.<init>()
org.springframework.beans.BeanInstantiationException: Failed to instantiate [cn.mvc.entity.User]: No default constructor found; nested exception is java.lang.NoSuchMethodException: cn.mvc.entity.User.<init>() 添加一个无参的构造器即可! pub…...
【无人机】无人机遥控器设置与校准,飞行模式的选择,无线电控制 (RC) 设置
目录 1、遥控器校准 1.1、校准步骤 2、飞行模式选择,遥控器通道映射 2.1、配置步骤 1、遥控器校准 在校准无线电系统之前,必须连接/绑定接收器和发射器。绑定发射器和接收器对的过程是特定于硬件的(有关说明,请参阅 RC 手册&…...
基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
一、核心硬件架构设计 高性能算力引擎(RK3588 处理器) 异构计算架构:集成 8 核 CPU(4Cortex-A762.4GHz 4Cortex-A551.8GHz),支持动态调频与多任务并行处理,单线程性能较传统四核方案…...
上岸率85%+,25西电先进材料与纳米科技学院(考研录取情况)
1、先进材料与纳米科技学院各个方向 2、先进材料与纳米科技学院近三年复试分数线对比 学长、学姐分析 由表可看出: 1、材料科学与工程25年相较于24年上升10分,为290分 2、材料与化工(专硕)25年相较于24年下降20分,为…...
10天学会嵌入式技术之51单片机-day-7
第十六章 UART通信 16.1 UART 概述 16.1.1 前置基础 想要理解和使用 UART,需要先了解一些通讯领域的术语,如下 。 (1)串行通讯和并行通讯 串行通讯和并行通讯是数据传输的两种主要方式,两者的区别如下。 ÿ…...
w~视觉~合集3
我自己的原文哦~ https://blog.51cto.com/whaosoft/12327888 #几个论文 Fast Charging of Energy-dense Lithium-ion Batteries Real-time Short Video Recommendation on Mobile Devices Semantic interpretation for convolutional neural networks: What makes a ca…...
AI在论文评审中的应用与工具推荐
一、AI在论文评审中的核心应用场景 内容质量评估与逻辑校验 • 核心论点识别:AI可快速定位论文核心创新点,并验证其与文献综述、实验数据的逻辑一致性(如知网研学的“文献矩阵分析”功能)。 • 方法论合理性检测:自动识…...
怎样记忆Precision、Recall?
首先,明确符号: TP(True Posive):标签为正,预测为正 TN(True Negative):标签为负,预测为负 FP(False Positive):标签为负,预测为正 FN(False Negative):标签为正…...
【刷题】第三弹——二叉树篇(上)
文章目录 一.相同的树二. 另一棵树的子树三. 翻转二叉树四. 对称二叉树五. 平衡二叉树六. 二叉搜索树七. 二叉树的遍历 一.相同的树 检查两棵树是否相同 思路: 1.先比较结构 结构不一样直接false 2.结构一样,在比较值 public boolean isSameTree(TreeNode p, TreeNode q) {if…...
【Canvas与标志】红黄渐变阴影太极图
【成图】 120*120的png图标 大小图: 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>红黄渐变阴影太极图 Draft1&l…...
express的中间件,全局中间件,路由中间件,静态资源中间件以及使用注意事项 , 获取请求体数据
Express 中间件系统 的详细讲解,包括全局中间件、路由中间件、静态资源中间件、请求体解析中间件,以及使用注意事项👇 🌐 一、什么是中间件(Middleware)? 中间件是 函数,在请求到达…...
大数据去重
实验4 大数据去重 1.实验目的 通过Hadoop数据去重实验,学生可以掌握准备数据、伪分布式文件系统配置方法,以及在集成开发环境Eclipse中实现Hadoop数据去重方法。 2.实验要求 了解基于Hadoop处理平台的大数据去重过程,理解其主要功能&…...
高功率激光输出稳定性不足?OAS 光学软件来攻克
法布里珀罗干涉仪设计案例 简介 法布里珀罗干涉仪作为一种高分辨率光学仪器,基于多光束干涉原理构建。其核心结构由两块高度平行的反射镜组成谐振腔,当光进入该谐振腔后,会在镜面间进行多次反射。在这一过程中,透射光会形成干涉条…...
基于大模型的结肠癌全病程预测与诊疗方案研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、结肠癌概述 2.1 流行病学特征 2.2 发病机制与危险因素 2.3 临床症状与诊断方法 三、大模型技术原理与应用现状 3.1 大模型的基本原理 3.2 在医疗领域的应用情况 3.3 在结肠癌预测中的潜力分析 四、术前…...
【Hive入门】Hive查询语言(DQL)完全指南:从基础查询到高级分析
目录 1 Hive查询执行架构全景 2 SELECT基础查询详解 2.1 基本查询结构 2.2 条件查询流程图 3 聚合函数与GROUP BY实战 3.1 聚合执行模型 3.2 GROUP BY数据流 4 排序操作深度解析 4.1 ORDER BY执行流程 4.2 排序算法对比 5 高级技巧与注意事项 5.1 嵌套查询与CTE 5.…...
【学习笔记】文件包含漏洞--相关习题
第一关 伪协议 用代码执行命令查看目录所含文件,发现flag.php 法一 题目代码含有include,写入文件包含指令: php://filter/readconvert.base64-encode/resourceflag.php 解码即可得到flag。 法二 法三 法二可以用php://input&…...
蓝桥杯 20. 压缩变换
压缩变换 原题目链接 题目描述 小明最近在研究压缩算法。他知道,压缩时如果能够使数值很小,就能通过熵编码得到较高的压缩比。然而,要使数值变小是一个挑战。 最近,小明需要压缩一些正整数序列,这些序列的特点是&a…...
BY免费空间去掉?i=1
BY免费空间去掉?i1 使用说明 支持域名:tae.dpdns.org 前提绑定主机,申请主机–控制面板选择–子域名,绑定xxx.tae.dpdns.org子域名 默认开启DDoS防御,无防火墙规则,建议用.htaccess来防御 默认去掉访问统计?i1 …...
中篇:深入剖析 L2CAP 与 ATT 协议模块(约5000字)
引言 在 BLE 协议栈中,L2CAP 与 ATT 承担了关键的数据分发、协议复用与属性访问职责。对多协议并存和大数据场景的应用,深入理解这两层协议的分片重组、流控机制、MTU/MTU 协商和 ATT 操作流程,对于提升系统性能与稳定性至关重要。本篇将全面拆解 L2CAP 与 ATT 的原理与实战…...
【C语言】C语言结构体:从基础到高级特性
前言 在C语言的世界里,结构体是一种强大而灵活的自定义数据类型,它能够将不同类型的数据组合在一起,形成一个逻辑上的整体。从简单的数据聚合到复杂的内存对齐优化,再到高效的位段操作,结构体在系统编程、嵌入式开发和…...
电控---JTAG协议
一、物理层架构与信号特性 1. 引脚定义与电气规范 核心引脚: TCK(测试时钟):频率范围0.1MHz至50MHz(如Xilinx Spartan-6支持25MHz),上升沿采样数据。TMS(测试模式选择)…...
FreeRTOS【3】任务调度算法
重要概念 在运行的任务,被称为"正在使用处理器",它处于运行状态。在单处理系统中,任何时间里只能有一个任务处于运行状态。 非运行状态的任务,它处于这 3 中状态之一:阻塞(Blocked)、暂停(Suspended)、就绪…...
高德地图API + three.js + Vue3基础使用与使用 + 标记不显示避坑
three.js小白的学习之路。 最近闲来无事,突然想起来之前好像项目有需求说是要将模型放在地图上。加上在浏览别的大佬写的博客时,也找到了一些大佬写的相关文章。基本上都是使用的高德地图开放平台的JS API。我也随之开启了自己的学习之路。 先简单学习…...
书籍推荐:《价值心法》一姜胡说
书名 :《价值心法》一姜胡说 摘录 每天问问自己,如果今天只做一件事,这件事是什么?找到它。拿出2—3个小时,专门处理这件事。其他所有事全部排在那2—3个小时之外。 集中一段时间用来做最重要的事。这段时…...
Linux GPIO驱动开发实战:Poll与异步通知双机制详解
1. 引言 在嵌入式Linux开发中,GPIO按键驱动是最基础也最典型的案例之一。本文将基于一个支持poll和异步通知双机制的GPIO驱动框架,深入剖析以下核心内容: GPIO中断与防抖处理环形缓冲区设计Poll机制实现异步通知(SIGIO)实现应用层交互方式 …...
x-cmd install | brows - 终端里的 GitHub Releases 浏览器,告别繁琐下载!
目录 核心功能与优势安装适用场景 还在为寻找 GitHub 项目的特定 Release 版本而苦恼吗?还在网页上翻来覆去地查找下载链接吗?现在,有了 brows,一切都将变得简单高效! brows 是一款专为终端设计的 GitHub Releases 浏览…...
一天学完Servlet!!!(万字总结)
文章目录 前言Servlet打印Hello ServletServlet生命周期 HttpServletRequest对象常用api方法请求乱码问题请求转发request域对象 HttpServletResponse对象响应数据响应乱码问题请求重定向请求转发与重定向区别 Cookie对象Cookie的创建与获取Cookie设置到期时间Cookie注意点Cook…...
c#-命名和书写规范
文章目录 1. 接口名称以大写 I 开头2. 属性类型以单词 Attribute 结尾3. 枚举类型对非标记使用单数名词,对标记使用复数名词4. 标识符不应包含两个连续下划线(__)字符5. 对变量、方法和类使用有意义的描述性名称6. 将 PascalCase 用于类名和方法名称7. 对方法参数和局部变量…...
【双指针】和为s的两个数字
57. 和为target的两个数字 剑指 Offer 57. 和为s的两个数字 输入一个递增排序的数组和一个数字target,在数组中查找两个数,使得它们的和正好是target。如果有多对数字的和等于target,则输出任意一对即可。 示例 1: 输入&…...
【Vue】TypeScript与Vue3集成
个人主页:Guiat 归属专栏:Vue 文章目录 1. 前言2. 环境准备与基础搭建2.1. 安装 Node.js 与 npm/yarn/pnpm2.2. 创建 Vue3 TypeScript 项目2.2.1. 使用 Vue CLI2.2.2. 使用 Vite(推荐)2.2.3. 目录结构简述 3. Vue3 TS 基础语法整…...
win11中wsl在自定义位置安装ubuntu20.04 + ROS Noetic
wsl的安装 环境自定义位置安装指定ubuntu版本VsCodeROS备份与重载备份重新导入 常用命令参考文章 环境 搜索 启用或关闭 Windows 功能 勾选这2个功能,然后重启 自定义位置安装指定ubuntu版本 从网上找到你所需要的相关wsl ubuntu版本的安装包,一般直…...
【数据可视化-29】食物营养成分数据可视化分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
手动实现legend 与 echarts图交互 通过js事件实现图标某项的高亮 显示与隐藏
通过html实现legend的样式 提供调用echarts的api实现与echarts图表交互的效果 实现饼图element实现类似于legend与echartstu表交互效果 效果图 配置代码 <template><div style"height: 400px; width: 500px;background-color: #CCC;"><v-chart:opti…...
C语言编程--16.删除链表的倒数第n个节点
题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2: 输入:head [1], n 1 输出:…...
centos7使用certbot完成nginx ssl证书续期
没有废话纯干货 yum源配置(配置好的可以跳过) #到/etc/yum.repos.d/下mkdir bak,将所用东西mv到bak下 cd /etc/yum.repos.d/ mkdir bak mv ./* bak/ wget https://mirrors.aliyun.com/repo/Centos-7.repo 没有安装nginx的话,配…...
ECharts学习之 toolbox 工具栏
toolbox: {show: true,feature: {//数据视图工具,可以展现当前图表所用的数据dataView: {title: "数据视图",readOnly: false, //是否不可编辑,即只读lang:[数据视图,关闭,刷新] //数据视图上有三个话术},magicType: {type: ["line"…...
修改el-select背景颜色
修改el-select背景颜色 /* 修改el-select样式--直接覆盖默认样式(推荐) */ ::v-deep .el-select .el-input__inner {background-color: #1d2b72 !important; /* 修改输入框背景色 */color: #fff; } ::v-deep .el-select .el-input__wrapper {background-…...
Qt 使用 MySQL 数据库的基本方法
在 Qt 中,使用 MySQL 数据库的基本方法主要是通过 QSqlDatabase、QSqlQuery 等类来进行数据库的连接、查询和数据操作。以下是 Qt 中连接和操作 MySQL 数据库的基本步骤。 1. 安装 MySQL 驱动 首先,确保您的 Qt 环境已经配置了 MySQL 驱动。通常&#…...
BLIP 系列论文(BLIP、BLIP-2、InstructBLIP)
BLIP BLIP 是 Salesforce 团队在多模态领域中的经典工作,影响力巨大,BLIP 系列包括:BLIP、BLIP-2、InstructBLIP。 BLIP 在多模态大模型之前,多模态领域中最流行的是视觉-语言预训练(Vision-Language Pre-training,…...
【玩转全栈】—— 无敌前端究极动态组件库--Inspira UI
目录 Inspira UI 介绍 配置环境 使用示例 效果: Inspira UI 学习视频: 华丽优雅 | Inspira UI快速上手_哔哩哔哩_bilibili 官网:https://inspira-ui.com/ Inspira UI 介绍 Inspira UI 是一个设计精美、功能丰富的用户界面库,专为…...
Java24新增特性
Java 24(Oracle JDK 24)作为Java生态的重要更新,聚焦AI开发支持、后量子安全、性能优化及开发者效率提升,带来20余项新特性和数千项改进。以下是核心特性的分类解析: 一、语言特性增强:简化代码与模式匹配 …...
Git多人协作与企业级开发模型
目录 1.多人协作一 2.多人协作二 3.远程分⽀删除后,本地gitbranch-a依然能看到的解决办法 4.企业级开发模型 4.1.Git的重要性 4.2.系统开发环境 4.3.Git 分⽀设计规范 1.多人协作一 ⽬前,我们所完成的⼯作如下: 基本完成Git的所有本…...