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

C++23 std::tuple与其他元组式对象的兼容 (P2165R4)

文章目录

    • 引言
    • C++23 std::tuple概述
      • std::tuple的定义和基本用法
      • std::tuple的特性
      • std::tuple的应用场景
    • 其他元组式对象的特点
      • Python元组的特点
      • Python元组与C++ std::tuple的对比
    • P2165R4提案的具体内容
      • 提案背景
      • 提案主要内容
      • 提案的影响
    • 兼容性示例代码
    • 总结

引言

在C++编程的世界里,元组(tuple)是一种非常实用的数据结构,它允许我们将不同类型的数据组合在一起,形成一个单一的对象。C++标准库中的std::tuple自C++11引入以来,已经成为了许多开发者处理多类型数据集合的首选工具。随着C++标准的不断发展,到了C++23版本,P2165R4提案进一步增强了std::tuple与其他元组式对象的兼容性,这一改进为我们的编程工作带来了更多的便利和灵活性。本文将深入探讨C++23中std::tuple的特性、其他元组式对象的特点,以及P2165R4提案的具体内容和影响。

C++23 std::tuple概述

std::tuple的定义和基本用法

std::tuple是C++标准库中的一个模板类,定义在<tuple>头文件中。它是一种固定大小的异构值集合,允许将不同类型的数据组合成一个单一的对象,这些数据可以通过它们的位置(索引)来访问。以下是一个简单的示例:

#include <iostream>
#include <tuple>int main() {// 定义一个包含三种类型(int, double, std::string)的元组std::tuple<int, double, std::string> my_tuple(10, 3.14, "Hello");// 访问元素int a = std::get<0>(my_tuple); // 获取第一个元素,值为10double b = std::get<1>(my_tuple); // 获取第二个元素,值为3.14std::string c = std::get<2>(my_tuple); // 获取第三个元素,值为"Hello"std::cout << "Tuple contents: " << a << ", " << b << ", " << c << std::endl;return 0;
}

在这个示例中,我们创建了一个包含intdoublestd::string类型的元组,并使用std::get函数通过索引来访问元组中的元素。

std::tuple的特性

  • 异构性:元组可以包含不同类型的元素,这使得它在处理多种类型数据时非常灵活。例如:
std::tuple<int, char, std::string, bool> my_tuple(42, 'A', "World", true);
  • 固定大小:元组的大小在编译时确定,不能动态改变。这意味着一旦创建了一个元组,其元素的数量和类型就不能再修改。
  • 元组的比较:元组支持比较操作符,如==!=<等,会逐个元素进行比较。例如:
std::tuple<int, double> t1(10, 2.5);
std::tuple<int, double> t2(10, 2.5);
bool are_equal = (t1 == t2); // true
  • 元组的解构:可以使用std::tie将元组的元素解构到单独的变量中。例如:
int a;
double b;
std::string c;
std::tie(a, b, c) = my_tuple; // 将元组的元素分别赋值给a, b, c

std::tuple的应用场景

  • 返回多个值:函数可以返回一个元组,从而返回多个值。例如:
std::tuple<int, double, std::string> get_values() {return std::make_tuple(10, 3.14, "Hello");
}// 使用
auto result = get_values();
int a = std::get<0>(result);
double b = std::get<1>(result);
std::string c = std::get<2>(result);
  • 存储异构数据:元组可以用于存储不同类型的数据,例如在需要传递多个不同类型参数时。例如:
std::tuple<int, std::string, bool> user_info(101, "Alice", true);
  • 作为容器的元素:元组可以作为容器(如std::vector)的元素,用于存储复杂的结构。例如:
std::vector<std::tuple<int, std::string>> users = {{1, "Alice"},{2, "Bob"},{3, "Charlie"}
};

其他元组式对象的特点

除了C++标准库中的std::tuple,还有一些其他的元组式对象,它们在不同的编程语言或库中有着各自的特点。这里以Python中的元组为例进行介绍。

Python元组的特点

  • 不可变性:一旦创建了一个元组,你就不能更改、添加或删除其中的任何元素。例如:
my_tuple = (1, 2, 3)
try:my_tuple[0] = 4
except TypeError as e:print(e)  # 输出:'tuple' object does not support item assignment
  • 使用圆括号:元组使用圆括号()来定义,而列表使用方括号[]。例如:
my_tuple = (1, 2, 3)
my_list = [1, 2, 3]
  • 可哈希性:由于元组是不可变的,它们可以用作字典的键,而列表则不能。例如:
my_dict = {my_tuple: "value"}
  • 多值赋值:当你将一个元组赋值给多个变量时,这些变量将分别存储元组中的每个值。例如:
a, b, c = my_tuple
print(a, b, c)  # 输出:1 2 3

Python元组与C++ std::tuple的对比

  • 相似性:两者都可以存储不同类型的数据,并且都支持通过索引访问元素。
  • 差异性:Python元组是不可变的,而C++std::tuple虽然大小固定,但元素的值可以通过std::get函数进行修改;Python元组的操作更加简洁,而C++std::tuple在类型安全和性能方面可能更具优势。

P2165R4提案的具体内容

提案背景

在C++编程中,我们经常会遇到需要将std::tuple与其他元组式对象进行交互的场景。然而,在P2165R4提案之前,std::tuple与一些元组式对象之间的兼容性存在一些问题,例如在构造、比较和操作等方面可能会出现不匹配或不支持的情况。P2165R4提案的目的就是为了解决这些兼容性问题,增强std::tuple与其他元组式对象之间的互操作性。

提案主要内容

  • 更新basic_common_referencecommon_type特殊化:通过更新这些特殊化,使得std::tuple在处理不同类型的元组式对象时能够更好地确定公共引用类型和公共类型,从而提高兼容性。
  • 约束tuple_catapplymake_from_tuple:对这些函数进行约束,确保它们在处理std::tuple和其他元组式对象时能够正确工作。例如,在拼接多个元组时,能够正确处理不同类型的元组式对象。
  • 添加新的构造函数和赋值运算符到std::tuple:为std::tuple添加新的构造函数和赋值运算符,使得它能够更方便地从其他元组式对象构造或赋值。例如,可以直接从一个自定义的元组式对象构造一个std::tuple对象。
  • 添加新的比较运算符到std::tuple:添加新的比较运算符,使得std::tuple能够与其他元组式对象进行比较。这些新的比较运算符是隐藏朋友函数,与旧的比较运算符有所不同。

提案的影响

P2165R4提案的实施使得std::tuple与其他元组式对象之间的兼容性得到了显著提升。这意味着我们在编写代码时,可以更加方便地使用std::tuple与其他元组式对象进行交互,减少了类型转换和手动处理的工作量,提高了代码的可读性和可维护性。同时,这也为我们在不同的库和代码之间进行数据交换和处理提供了更多的可能性。

兼容性示例代码

以下是一个简单的示例代码,展示了P2165R4提案后std::tuple与其他元组式对象的兼容性:

#include <iostream>
#include <tuple>// 自定义元组式对象
template<typename T1, typename T2>
struct MyTupleLike {T1 first;T2 second;MyTupleLike(T1 f, T2 s) : first(f), second(s) {}
};// 重载比较运算符
template<typename T1, typename T2>
bool operator==(const MyTupleLike<T1, T2>& lhs, const std::tuple<T1, T2>& rhs) {return lhs.first == std::get<0>(rhs) && lhs.second == std::get<1>(rhs);
}int main() {MyTupleLike<int, double> my_tuple_like(10, 3.14);std::tuple<int, double> std_tuple(10, 3.14);if (my_tuple_like == std_tuple) {std::cout << "The two tuples are equal." << std::endl;} else {std::cout << "The two tuples are not equal." << std::endl;}return 0;
}

在这个示例中,我们定义了一个自定义的元组式对象MyTupleLike,并重载了它与std::tuple的比较运算符。通过这种方式,我们可以直接比较自定义元组式对象和std::tuple对象,体现了P2165R4提案后std::tuple与其他元组式对象的兼容性。

总结

C++23中P2165R4提案对std::tuple与其他元组式对象的兼容性进行了重要的改进。通过更新特殊化、约束函数、添加新的构造函数和比较运算符等方式,使得std::tuple能够更好地与其他元组式对象进行交互。这一改进不仅提高了代码的灵活性和可维护性,也为我们在不同的编程场景中使用元组提供了更多的选择。在实际编程中,我们可以充分利用这些改进,更加高效地处理多类型数据集合。同时,我们也应该关注C++标准的不断发展,及时了解和应用新的特性,以提升我们的编程能力和代码质量。

相关文章:

C++23 std::tuple与其他元组式对象的兼容 (P2165R4)

文章目录 引言C23 std::tuple概述std::tuple的定义和基本用法std::tuple的特性std::tuple的应用场景 其他元组式对象的特点Python元组的特点Python元组与C std::tuple的对比 P2165R4提案的具体内容提案背景提案主要内容提案的影响 兼容性示例代码总结 引言 在C编程的世界里&am…...

网络Tips20-003

1.E1载波的控制开销占2/32*100%6.25%&#xff0c;E1载波的基本帧传送时间是125uS。 2.计算机在一个指令周期的过程中&#xff0c;为从内存读取指令操作码&#xff0c;首先要将.程序计数器(PC)的内容送到地址总线上 3.3DES算法:密码学中&#xff0c;3DES是三重数据加密算法通称…...

Rust的安全卫生原则

在Rust编程世界里&#xff0c;unsafe关键字常常让初学者感到困惑。他们经常会问&#xff1a;“在unsafe块里能做什么&#xff1f;”“什么时候需要使用unsafe&#xff1f;” 这些问题虽然很常见&#xff0c;但对于真正理解Rust的安全机制来说还远远不够。因为随着Rust操作语义的…...

TestBench激励与待测

TestBench激励与待测 ✅ 一、TestBench 的作用✅ 二、例化的目的✅ 三、TestBench 中的信号类型选择&#x1f7e2; 输入端口&#xff08;input&#xff09; → 在 TestBench 中声明为 reg&#x1f7e1; 输出端口&#xff08;output&#xff09;→ 在 TestBench 中声明为 wire ✅…...

VulnHub-OSCP靶机

前言&#xff1a;由于这台机器过于简单&#xff0c;所以我会尽量细化和介绍每个步骤以及涉及到的知识点&#xff0c;让正在打入门机器的你不在迷茫和硬化的操作&#xff0c;理解并熟悉每条命令以及参数的含义&#xff0c;以及把前期带给我们的信息进行快速筛选&#xff0c;有利…...

【前端】【面试】在 Nuxt.js SSR/SSG 应用开发的 SEO 优化方面,你采取了哪些具体措施来提高页面在搜索引擎中的排名?

在 Nuxt.js 的 SSR&#xff08;服务器端渲染&#xff09;或 SSG&#xff08;静态站点生成&#xff09;应用中&#xff0c;SEO 优化是非常核心的工作内容之一。利用 Nuxt.js 的特性&#xff0c;我们可以通过多个维度系统地提升搜索引擎排名。 下面是我在实际项目中采取的 SEO 优…...

软考 系统架构设计师系列知识点之杂项集萃(53)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;52&#xff09; 第85题 在静态测试中&#xff0c;主要是对程序代码进行静态分析。“数据初始化、赋值或引用过程中的异常”属于静态分析中的&#xff08;&#xff09;。 A. 控制流分析 B. 数据…...

【AI面试准备】模型自动化评估经验

面试要求&#xff1a;模型自动化评估经验。 以下是针对模型自动化评估经验的结构化知识总结&#xff0c;涵盖核心概念、工具链、高频考点和面试回答技巧&#xff0c;助你快速掌握关键点&#xff1a; 目录 **一、模型自动化评估的核心逻辑**1. **为什么要自动化评估&#xff1f…...

indexedDB

indexedDB 特点 **容量大&#xff1a;**不同浏览器不一样&#xff0c;250MB **遵守同源策略&#xff1a;**只能访问同源下的数据库&#xff0c;不能跨域 **异步操作&#xff1a;**防止阻塞&#xff08;特别是大量数据的操作&#xff09; 事务支持‌&#xff1a;确保数据的…...

Mybatis学习(下)

目录 1. 动态sql的应用 1.2 1.2 1.3 、 、 标签 1.4 1. 动态sql的应用 使用Mybatis框架时, 对于sql数据的操作量比较大的时候, 看着会觉得很乱, 可能写着写着就乱了, 或者说回过头来发现sql语句写错了, 很麻烦, 所以动态sql就可以让我们用Java代码, 替换部分sql语句 1.2 &l…...

[三分钟学算法]分治-快速排序-最小的K个数:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。

文章目录 题目详情算法原理编写代码 题目详情 题目链接 设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例&#xff1a; 输入&#xff1a; arr [1,3,5,7,2,4,6,8], k 4 输出&#xff1a; [1,2,3,4]提示&#xff1a; 0 < len(arr) <…...

从github的插件直接导入unity

我们随便找个插件&#xff1a; A&#xff1a;处直接下载压缩包文件&#xff0c;或是git下载也可以 B&#xff1a;直接下载打好包也行 我们这里选择直接下好的包 请注意!!!有些版本可能不支持&#xff0c;请找到支持的&#xff0c;对应的历史版本进行下载使用 点击B&#xf…...

Linux | 了解Linux中的任务调度---at与crontab 命令

一. 延迟任务 1.1 延迟任务的发起 -- at命令 at命令执行是调用的是atd服务&#xff0c;即使系统最小化安装atd也会被安装到系统中at 任务信息存放在系统中/var/spool/at目录中at 任务的日志文件被存放到/var/log/cron中at 任务执行时如果遇到系统处于关闭状态&#xff0c;那么…...

多语言笔记系列:Polyglot Notebooks 多种使用方式

.NET Interactive 使用方式 .NET Interactive生态&#xff0c;大约由&#xff1a;前端UI(Jupyter、VSCode等)、交互协议(PMP、JMP)、执行器(.net interactive)和语言服务组成。 有多种组合方式&#xff0c;来使用。最常用的还是 VS Code(Polyglot Notebooks插件)充当前端UI&am…...

TF-IDF算法详解

引言 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;是信息检索和文本挖掘中常用的加权技术&#xff0c;用于评估一个词语对于一个文档集或语料库中某个文档的重要程度。 一、基本概念 1. 组成要素 TF-IDF由两部分组成&#xff1a; TF (Term F…...

C语言实现数据结构:堆排序和二叉树_链式

一.堆的应用 1.堆排序 void test01() {int arr[] { 17,20,10,13,19,15 };int n sizeof(arr) / sizeof(arr[0]);HP p;HPInit(&p);for (int i 0; i < n; i){HPPush(&p, arr[i]);}int i 0;while (!HPEmpty(&p)){arr[i] HPTop(&p);HPPop(&p);}for (i…...

网狐系列三网通新钻石娱乐源码全评:结构拆解、三端实测与本地部署问题记录

本文为基于“网狐系列三网通新钻石娱乐电玩”源码的私测报告&#xff0c;涵盖前后端结构解析、三端测试结果、控制台功能说明、智能机器人机制以及本地部署过程中的真实报错与解决策略。文章目的仅限于源码结构研究和测试用途&#xff0c;不具备任何上线、商用部署条件。 一、源…...

C语言的指针认识

当实参传递给形参时&#xff0c;形参实例化相当于实参的一份临时拷贝 对形参的修改不能改变实参&#xff0c;除非用指针...

iview自定义下拉树菜单

最近由于项目需要&#xff0c;封装了第二种下拉树&#xff0c;带checkBox并且可以支持快速选择的下拉树。样式如下 自定义下拉树菜单.png 所实现交互功能如下&#xff1a; 1.点击对应的层级按钮&#xff0c;自动勾选出对应的所有同级节点。 2.点击自定义&#xff0c;清空所有勾…...

Dubbo(94)如何在金融系统中应用Dubbo?

在金融系统中应用Dubbo&#xff0c;可以通过以下步骤实现&#xff1a; 项目结构设计&#xff1a;规划项目的模块结构&#xff0c;通常包括服务接口模块、各个服务提供者模块&#xff08;如账户服务、交易服务、风控服务等&#xff09;、服务消费者模块&#xff08;如前端应用、…...

Linux:web服务

一、nginx的安装及启用 1、为主机配置IP和搭建软件仓库 &#xff08;1&#xff09;IP的配置 &#xff08;2&#xff09;搭建软件仓库 2、 web服务的安装与启用 &#xff08;1&#xff09;nginx的端口 更改nginx端口号 效果 &#xff08;2&#xff09; 默认发布目录 修改默认发…...

process terminated with status -1073741515

使用CodeBlocks25.03编译wxWidgets3.2.8程序时提示process terminated with status -1073741515 后来自己重新编译生成了一下wxWidgets3.2.8源码&#xff0c;问题得以解决。...

2025信息安全网络安全意识培训资料汇编(24份)

最新整理&#xff1a;2025信息安全网络安全意识培训资料汇编&#xff0c;共24份资料&#xff0c;供学习参考。 互联网信息安全意识培训.pptx100个网络安全风险防范知识.pptx亚信信息安全意识培训.pptx网络安全法规及意识培训.pptx网络安全意识与案例分析.pptx绿盟-安全意识培训…...

线程概念与控制

Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部 的控制序列”&#xff0c;一切进程至少都有一个执行线程&#xff0c;线程在进程内部运行&#xff0c;本质是在进程地址空间内…...

【SpringAI+阿里云百炼】AI对话4个Demo

基于SpringAI和阿里云百炼平台&#xff0c;实现了四个AI对话的小Demo 小团团对话机器人哄哄模拟器培训班智能客服仿ChatPDF 笔记如下:语雀知识笔记《SpringAI》...

Redis-----认识NoSQL

文章目录 前言一、SQL的结构化与NoSQL非结构化1.SQL2.NoSQL 二、关系型数据库SQL与非关系型数据库NoSQL1.SQL2.NoSQL 三、SQL查询与NoSQL查询1.SQL2.NoSQL 四、事务的区别1.SQL2.NoSQL 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 提示&#xff…...

驱动开发硬核特训 · Day 27(下篇):深入掌握 Common Clock Framework 架构与实战开发

节。 在本篇内容中&#xff0c;我们将围绕 Linux 内核中的时钟子系统核心架构 —— Common Clock Framework&#xff08;简称 CCF&#xff09;展开深入讲解&#xff0c;目标是帮助你全面理解其设计理念、主要数据结构、注册流程、驱动实现方式&#xff0c;以及如何基于 NXP i.M…...

Qt基础知识记录(终篇)

写在前面 博主的项目所需知识已经差不多学完了&#xff0c;后续如果还需要再学习那就继续学&#xff0c;毕竟程序员就是摸着石头过河的&#xff0c;碰壁乃是常有的事情。博主的项目服务器是用MySQL存储数据的&#xff0c;所以博主学习一下Qt如何连接MySQL及从MySQL中存取数据 博…...

LeetCode刷题链表

文章目录 链表总结 常用技巧两数相加题解代码 两两交换链表中的节点题解代码 重排链表题解代码 合并k个升序链表题解代码 K个一组翻转链表题解代码 链表总结 常用技巧 画图 直观 形象 便于理解引入虚拟头节点&#xff0c;便于处理边界情况&#xff0c;方便我们对链表进行…...

transfomer网络构建

目录 整体架构 详细模块分析 Transformer 算法的演进 代码讲解 1. 导入必要的库 2. InputEmbeddings 类 3. PositionalEncoding 类 4. LayerNormalization 类 5. FeedForwardBlock 类 6. MultiHeadAttentionBlock 类 7. ResidualConnection 类 8. EncoderBlock 类 9. Encoder 类…...

【mathematica】常见命令

mathematica官方文档 下载安装 安装激活教程 基本用法 输入、画图、基本运算、方程组求解、公式导出、 笔记本新建&#xff1a; 文件-新建-笔记本 输入&#xff1a; 直接在界面输入定义的变量、式子或者方程组即可 输出&#xff08;计算&#xff09; ENTER : 换行ENTER SHIF…...

photoshop学习笔记2

第一章 第01节-界面的重要性(学习方法) 第02节-文件的打开新建及储存 第03节-移动工具(图层概念) 学习目标&#xff1a; 1.了解图层概念 2.认识工具属性 3.掌握工具使用 图层的概念 移动工具 移动工具就是用来移动图层内容的。是否可以用来移动组…...

从软件到硬件:三大主流架构的特点与优劣详解

常见的架构包括软件架构、企业架构、硬件架构等&#xff0c;以下是对这几种常见架构的分析&#xff1a; 一、软件架构 1.分层架构 描述&#xff1a;分层架构是一种经典的软件架构模式&#xff0c;将软件系统按照功能划分为不同的层次&#xff0c;一般包括表现层&#xff08;…...

网狐旗舰大联盟组件源码私测笔记:结构分层、UI重构与本地实操全流程

作为一套衍生于传统网狐架构的源码版本&#xff0c;大联盟这套源码组件可谓是在经典基础上进行了深度重塑。与老版死板的框架风格不同&#xff0c;它不仅对界面做了大刀阔斧的重构&#xff0c;还在组件层级的组织上做了优化。本文将基于一整套源码进行深度解析&#xff0c;强调…...

Oracle OCP认证考试考点详解083系列07

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 31. 第31题&#xff1a; 题目 解析及答案&#xff1a; 从 Oracle 19c 开始&#xff0c;数据库配置助手&#xff08;DBCA&#xff09;在克…...

Qt .pro配置msvc相关命令(二)

目录 1. 指定编译器版本 2. 设置编译器选项 3. 设置链接器选项 4. 定义预处理器宏 5. 指定包含目录和库目录 6. 配置生成目标 7. 配置调试和发布模式 8. 指定生成文件的目录 9. 使用特定的 MSVC 功能 10. 条件编译 在 Qt 中&#xff0c;.pro 文件是项目配置文件&…...

Debezium Binlog解析与事件转换流程详解

Debezium Binlog解析与事件转换流程详解 1. Binlog解析整体流程 #mermaid-svg-2ghVgmGOnV4elpya {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2ghVgmGOnV4elpya .error-icon{fill:#552222;}#mermaid-svg-2ghVgmG…...

SpringBoot接口防抖(防重复提交)

目录 一.流程分析&#xff1a; 二.案例代码详解&#xff1a; 前提条件&#xff1a; 1.自定义注解&#xff1a; 2.编写异常类&#xff1a; 3.创建key生成器&#xff1a; 4.自定义AOP切面&#xff1a; 5.Controller&#xff1a; 三.Redission分布式解决方案&#xff1a;…...

HTML02:网页基本信息

网页的基本信息 DOCTYPE声明 < title 标签 < meat 标签 <!-- DOCTYPE:告诉浏览器&#xff0c;我们要使用什么规格 --> <!DOCTYPE html> <!-- head标签代表网页头部 --> <html lang"en"> <head><!-- meta描述性标签&#…...

uniswap v4 hooks标志位

hooks的代码位置在这&#xff0c;它是是组织校验&#xff0c;调用用户创建钩子的类库。 首先看其中定义的常量&#xff1a; uint160 internal constant ALL_HOOK_MASK uint160((1 << 14) - 1);uint160 internal constant BEFORE_INITIALIZE_FLAG 1 << 13;uint16…...

YOLOv7细节解读

RepVGG 推理加速 背景与动机&#xff1a;在模型的骨干网络&#xff08;backbone&#xff09;优化中&#xff0c;VGG 因结构简单&#xff0c;在显存利用上有优势&#xff08;单一路径&#xff0c;仅需一倍显存&#xff09;&#xff0c;但被多分支结构的 ResNet 超越。然而&#…...

nt!MiSessionAddProcess函数分析和nt!MmSessionSpace全局变量的关系

第一部分&#xff1a; 1: kd> g Breakpoint 42 hit nt!MiSessionAddProcess: 80ab2fbe 55 push ebp 1: kd> kc # 00 nt!MiSessionAddProcess 01 nt!MmCreateProcessAddressSpace 02 nt!PspCreateProcess 03 nt!NtCreateProcessEx 04 nt!_KiSystemServic…...

情绪ABC——AI与思维模型【93】

一、定义 情绪ABC思维模型是一种心理学上的理论&#xff0c;它认为人们的情绪和行为反应&#xff08;C&#xff0c;Consequence&#xff09;并非直接由激发事件&#xff08;A&#xff0c;Activating event&#xff09;引起&#xff0c;而是由个体对激发事件的认知和评价所产生…...

基于k8s系统的API网关-kong网关

1. 为什么需要 API 网关 API网关是一个服务器&#xff0c;是系统的唯一入口。API网关封装了系统内部架构&#xff0c;为每个客户端提供一个定制的API。它可能还具有其它职责&#xff0c;如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API网关方式的核心要点…...

8.2 GitHub企业级PDF报告生成实战:ReportLab高级技巧与性能优化全解析

GitHub企业级PDF报告生成实战:ReportLab高级技巧与性能优化全解析 GitHub Sentinel 高级功能实现:PDF 报告生成技术详解 关键词:PDF 报告生成, ReportLab 实战, 结构化数据转换, 容器化字体配置, 企业级报告模板 1. 需求分析与技术选型 PDF 报告生成需要满足以下技术要求…...

一周学会Pandas2 Python数据处理与分析-Pandas2复杂数据查询操作

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 前面我们学了.loc[]等几个简单的数据筛选操作&#xff0c;但实际业务需求往 往需要按照一定的条件甚至复杂的组合条件…...

四年级数学知识边界总结思考-下册

目录 一、背景二、过程1.四则运算小学四年级课本下册《四则运算》知识点、由来、作用与意义解析**一、核心知识点****二、历史由来****三、作用与意义****四、总结** 2.运算律小学四年级课本下《运算律》知识点、由来、作用与意义解析**一、核心知识点****二、历史由来****三、…...

Git从入门到精通-第四章-更新仓库

目录 检查当前文件状态 追踪新文件 暂存已修改的文件&#xff08;git add作用总结&#xff09; 简化输出状态 忽略文件 查看已暂存和未暂存的修改 git diff 提交更新 git commit 跳过使用暂存区 前言&#xff1a;在工作区和Git仓库间设置暂存区的意义 1. ​精准控制…...

RPG8.增加武器

1.创建一个Actor的c类 2.创建武器WeaponBase的子类&#xff0c;给玩家的武器 3.进入WeaponBase&#xff0c;只留下构造函数&#xff0c;并且将bCanEventTick改为false&#xff0c;增加组件。 #pragma once#include "CoreMinimal.h" #include "GameFramework/Ac…...

力扣1128题解

记录 2525.5.4 题目&#xff1a; 思路&#xff1a; 先将dominoes[i]的二元全部变为前大后小的形式&#xff0c;再遍历该数组&#xff0c;用数组来记录。 代码&#xff1a; class Solution {public int numEquivDominoPairs(int[][] dominoes) {int [] [] cnt new int [10…...