C++类模板编程练习(从基础到进阶)
一、基础模板类设计
- 泛型盒子(Box)
实现一个 Box 类模板,存储任意类型的值,并提供获取/修改方法。
Box<int> intBox(42);
cout << intBox.get(); // 输出 42
intBox.set(100);
- 类型转换器(Converter)
实现 Converter<T, U> 类模板,提供静态方法 convert,将类型 T 转换为 U。
double d = Converter<int, double>::convert(42); // 42.0
二、模板与数学运算
- 泛型计算器(Calculator)
实现 Calculator 类模板,支持加减乘除(编译时检查 T 是否为算术类型)。
Calculator<int> calc;
cout << calc.add(3, 5); // 输出 8
- 固定大小数组(FixedArray)
实现 FixedArray<T, N> 类模板,表示固定长度的数组。
FixedArray<float, 3> arr = {1.1f, 2.2f, 3.3f};
cout << arr[1]; // 输出 2.2
三、模板特化与条件逻辑
- 类型判别器(TypeInfo)
实现 TypeInfo 类模板,通过静态成员变量输出类型名称。
cout << TypeInfo<int>::name; // 输出 "int"
// 对指针类型特化:TypeInfo<int*>::name 输出 "int*"
- 布尔值包装器(BoolWrapper)
特化一个模板类,根据布尔值选择不同行为。
BoolWrapper<true>::action(); // 输出 "True path"
BoolWrapper<false>::action(); // 输出 "False path"
四、多参数模板
- 泛型坐标点(Point)
实现 Point<T, U> 类模板,表示混合类型的二维点。
Point<int, double> p(1, 2.5);
cout << p.x << ", " << p.y; // 输出 1, 2.5
2.键值对存储(KeyValuePair)
实现 KeyValuePair<K, V> 类模板,模拟简单的字典条目。
KeyValuePair<string, int> kv("age", 25);
cout << kv.key << ": " << kv.value; // 输出 "age: 25"
五、综合挑战
- 泛型单例模式(Singleton)
实现线程安全的 Singleton 类模板。
Singleton<Logger>::getInstance().log("Hello");
2.编译期阶乘(Factorial)
用模板元编程实现编译期阶乘计算。
constexpr int val = Factorial<5>::value; // 120
相关文章:
C++类模板编程练习(从基础到进阶)
一、基础模板类设计 泛型盒子(Box) 实现一个 Box 类模板,存储任意类型的值,并提供获取/修改方法。 Box<int> intBox(42); cout << intBox.get(); // 输出 42 intBox.set(100);类型转换器(Converter&…...
基于物联网的智能家居安全防护系统设计
资料下载地址:基于物联网的智能家居安全防护系统仿真(仿真代码) 目录 一、功能介绍 二、仿真图 三、程序 一、功能介绍 1.单片机和app、OneNet云平台通过wifi进行通信 2.马达模拟家里的用电设备,可通过按键开关 3.可检测用电量…...
android jatpack Compose 多数据源依赖处理:从状态管理到精准更新的架构设计
Android Compose 多接口数据依赖管理:ViewModel 状态共享最佳实践 📌 问题背景 在 Jetpack Compose 开发中,经常遇到以下场景: 页面由多个独立接口数据组成(如 Part1、Part2)Part2 的某些 UI 需要依赖 P…...
非序列实现MEMS聚焦功能
zemax非序列模式下有MEMS,但是没有对应的代码。无法修改成自己需要的功能 以下是实现MEMS聚焦功能: #include <windows.h> #include <cmath> #include <stdio.h> #include <string.h> #include <algorithm> #undef max #undef min#define D…...
基于Java,SpringBoot,Vue,HTML宠物相亲配对婚恋系统设计
摘要 基于Java、SpringBoot、Vue和HTML的宠物相亲配对系统设计旨在为宠物主人打造一个高效、智能的宠物社交与配对平台。系统采用前后端分离架构,前端基于Vue.js框架结合HTML/CSS/JavaScript构建动态交互界面,实现宠物信息展示、用户社交互动等功能&…...
AI大模型学习十二:尝鲜ubuntu 25.04 桌面版私有化sealos cloud + devbox+minio对象存储测试和漫长修改之路
一、说明 前面已经安装完成,这里我们测试对象存储 AI大模型学习十一:尝鲜ubuntu 25.04 桌面版私有化sealos cloud devboxminio,实战运行成功-CSDN博客https://blog.csdn.net/jiangkp/article/details/147424823?spm1011.2415.3001.5331 二…...
身份与访问管理(IAM):零信任架构下的认证授权技术与实战
身份与访问管理(IAM):零信任架构下的认证授权技术与实战 在网络安全防御体系中,身份与访问管理(Identity and Access Management, IAM)是守护数字资产的“数字门禁系统”。随着远程办公和多云架构的普及&a…...
潮了 低配电脑6G显存生成60秒AI视频 本地部署/一键包/云算力部署/批量生成
最近发现了一个让人眼前一亮的工具——FramePack,它能用一块普通的6GB显存笔记本GPU,生成60秒电影级的高清视频画面,效果堪称炸裂!那么我们就把他本地部署起来玩一玩、下载离线一键整合包,或者是用云算力快速上手。接下…...
高防IP+CDN组合:电商大促的“双保险”防护方案
引言 电商大促期间,平台流量呈爆发式增长,既要应对瞬时激增的访问量,又要防范黑客趁机发起的DDoS攻击、恶意爬虫等威胁。单一防护手段往往难以兼顾性能与安全,而高防IPCDN组合通过“流量清洗加速分发”的双重机制,为电…...
“IAmMusicFont.com“:将音乐变成视觉
很高兴向大家介绍——IAmMusicFont.com,这是一个专为音乐爱好者和设计师打造的在线字体生成器,灵感源自Playboi Carti 2025年专辑《MUSIC》(又称"I Am Music")的标志性封面设计。 什么是"I am music font"&a…...
C++入门(下)
本文为个人学习笔记,如有错误欢迎批评指正,如有侵权,请联系删除。 今日名言: 好运只是个副产品,只有当你不带任何私心杂念,单纯的去做事情时,他才会降临。 上一篇文章我们讲了C入门的一部分内容…...
ubuntu22.04 命令行修改静态ip
传统interfaces文件配置(适用于旧版)即便我们已经在桌面上配置了固定ip 这里也可以修改 编辑配置文件 修改/etc/network/interfaces(需安装net-tools): # interfaces(5) file used by ifup(8) and ifdown(8) # In…...
Ubuntu18.04配置C++环境和Qt环境
Ubuntu18.04配置C环境和Qt环境 1、前言3.2 安装其他库3.3 查看有没有安装成功3.4测试C环境 4、配置Qt环境4.1 安装相关的库4.2 测试 5、总结 1、前言 记录一下Ubuntu18.04配置C环境和Qt环境的过程,方便自己日后回顾,也可以给有需要的人提供帮助。 # 2…...
深度学习--自然语言处理统计语言与神经语言模型
文章目录 前言一、语言转换方法1、数据预处理2、特征提取3、模型输入4、模型推理 二、语言模型1、统计语言模型1) 机器学习词向量转换2)解释:3) 统计语言模型存在的问题 2、神经语言模型1)one—hot编码2)解决维度灾难3)…...
linux ptrace 图文详解(七) gdb、strace跟踪系统调用
目录 一、gdb/strace 跟踪程序系统调用 二、实现原理 三、代码实现 四、总结 (代码:linux 6.3.1,架构:arm64) One look is worth a thousand words. —— Tess Flanders 相关链接: linux ptrace 图…...
Feign接口调用失败降级机制
是的,通过 FallbackFactory 实现的降级逻辑在 Feign 接口调用失败时会被触发,但需要注意以下关键点以确保降级生效: 一、代码有效性分析 降级逻辑是否生效? • 是的,当 Feign 调用 BaseServiceFeign 接口的 updateMoni…...
系统架构-安全架构设计
概述 对于信息系统来说,威胁有:物理环境(最基础)、通信链路、网络系统、操作系统、应用系统、管理系统 物理安全:系统所用设备的威胁,如自然灾害、电源故障通信链路安全:在传输线路上安装窃听…...
python实现简单的UI交互
文章目录 1. 基础打印 覆盖同一行2. 多行动画效果3. 彩色文本(Windows/macOS/Linux)4. 输入交互5. 异步输入与非阻塞显示6. 高级控制台 UI 库 可以通过控制台打印实现简单的「伪UI交互」,尤其适合展示进度、动态文本或轻量级状态反馈。以下是…...
高频面试题:如何保证数据库和es数据一致性
背景 在实际项目开发中,我们经常将MySQL作为业务数据库,ES作为查询数据库,用来实现读写分离,缓解MySQL数据库的查询压力,应对海量数据的复杂查询,这其中有一个很重要的问题,就是如何实现MySQL数…...
CS001-7-hbao
HBAO https://zhuanlan.zhihu.com/p/348467142 HBAO(屏幕空间的环境光遮蔽) - 知乎 (zhihu.com) [摸着原神学图形]HBAO实现与优化 - 知乎 (zhihu.com) https://zhuanlan.zhihu.com/p/367793439 Global Illumination_Horizon-Based Ambient Occlusion(HBAO)-CSDN博客 这个解…...
使用npm install或cnpm install报错解决
1.从git上拉了一个新vue项目npm install 报错如下 解决办法: 清除npm缓存 npm cache clean -force 2.阿里云镜像证书过期,报错如下 解决办法: 更换阿里云镜像地址 #原来的地址是:https://registry.npm.taobao.org/ cnpm confi…...
Electron Forge【实战】阿里百炼大模型 —— AI 聊天
获取 apiKey 登录并开通阿里云百炼 https://bailian.console.aliyun.com/#/home 新人有半年免费的使用福利,在模型详情中,可以查看剩余的免费额度 https://bailian.console.aliyun.com/?tabmodel#/model-market/detail/qwen-turbo 在下方链接中创建 ap…...
Vue3实现高仿word自定义颜色选择器组件(支持 v-model)
目录 Vue3实现高仿word自定义颜色选择器组件(支持 v-model)需求分析大致效果需求功能实现所需技术从UI哪里拿到主题颜色标准色进行子主组件的v-model实现子组件布局实现子组件样式实现子组件全部代码:父组件调用方式完结 Vue3实现高仿word自定…...
.NET中,const和readonly区别
在.NET中,const和readonly都用于定义不可变的值,但它们在行为和使用场景上有显著区别。以下是两者的详细对比: 初始化时机 • const ◦ 编译时常量,必须在声明时赋值。 ◦ 值在编译时确定,并被直接嵌入到IL代码中&…...
力扣-206.反转链表
题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 class Solution { public:ListNode* reverseList(ListNode* head) {//头插法ListNode *p head;headnullptr;ListNode *temp nullptr;while (p! nullptr){tempp;pp->next;tem…...
五一去荣昌吃卤鹅?基于Java和天地图的寻找荣昌卤鹅店实践
目录 前言 1、卤鹅哥与甲亢哥的爆火事件 2、荣昌卤鹅产业的空间分布 3、使用Java 和天地图进行产业挖掘 一、地名检索简介 1、地名检索功能 2、地名检索API介绍 二、荣昌卤鹅检索实践 1、数据获取流程 2、天地图API请求构建 3、参数构建及调用 4、结果生成及本地保存…...
力扣-160.相交链表
题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返…...
CSS Position 属性完全指南
CSS 中的 position 属性是布局的基础,它决定了元素在页面中的定位方式。理解各种定位值的行为和适用场景对于构建灵活、响应式的布局至关重要。 position 属性的五个主要值 1. static(默认值) 元素遵循正常的文档流不受 top, right, botto…...
热度上升,25西电机电工程学院(考研录取情况)
1、机电工程学院各个方向 2、机电工程学院近三年复试分数线对比 学长、学姐分析 由表可看出: 1、力学25年相较于24年下降35分,为255分 2、机械工程25年相较于24年下降15分,为320分 3、仪器科学与技术25年相较于24年上升35分,为…...
R7周:糖尿病预测模型优化探索
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、数据预处理 1.设置GPU import torch.nn.functional as F import torch.nn as nn import torch, torchvisiondevice torch.device("cuda"…...
使用Go语言实现轻量级消息队列
文章目录 一、引言1.1 消息队列的重要性1.2 为什么选择Go语言1.3 本文实现的轻量级消息队列特点 二、核心设计2.1 消息队列的基本概念2.1.1 消息类型定义2.1.2 消息结构设计 2.2 架构设计2.2.1 基于Go channel的实现方案2.2.2 单例模式的应用2.2.3 并发安全设计 2.3 消息发布与…...
QT窗口相关控件及其属性
widget,PushButton,lineEdit等都是基于QWidget延展出来的 并不是完整的窗口,而是作为窗口的一部分 真正的窗口是QMainWindow 菜单栏 Qt中的菜单栏是通过QMenuBar这个类来实现的,一个主窗口最多只有一个菜单栏,位于主…...
OceanBase 复合索引指南
一、 什么是复合索引,与单列索引的区别是什么 1.1 什么是复合索引 复合索引是指在数据库表中由两个或更多列共同构成的索引,也称多列索引。其独特之处在于,它并非仅针对单一列建立索引,而是对多个列的组合进行索引,从…...
蛋白质大语言模型ESM介绍
ESM(Evolutionary Scale Modeling)是 Meta AI Research 团队开发的一系列用于蛋白质的预训练语言模型。这些模型在蛋白质结构预测、功能预测和蛋白质设计等领域展现出了强大的能力。以下是对 ESM 的详细介绍: 核心特点 大规模预训练:基于大规模蛋白质序列数据进行无监督学…...
回归测试:保障软件质量的重要防线
在软件开发的生命周期中,变更无处不在——新功能添加、缺陷修复、性能优化或代码重构。但每一次变更都可能像投入平静水面的石子,引起意想不到的涟漪效应。这就是回归测试(Regression Testing)存在的意义,它是软件质量保障体系中不可或缺的一…...
51单片机中断
80C51 单片机的中断源及其默认优先级(从高到低): 优先级中断源中断号1️⃣外部中断 0 (INT0)IE0,编号 02️⃣定时器 0 (T0)TF0,编号 13️⃣外部中断 1 (INT…...
Ollama 常见命令速览:本地大模型管理指南
Ollama 常见命令速览:本地大模型管理指南 一、什么是 Ollama? Ollama 是一个轻量级工具,允许用户在本地快速部署和运行大型语言模型(LLM),如 Llama、DeepSeek、CodeLlama 等。其命令行工具设计简洁&#…...
LSPatch官方版:无Root Xposed框架,自由定制手机体验
在Android设备的自定义和优化过程中,Xposed框架一直是一个强大的工具。然而,许多用户因为Root操作的复杂性和风险而望而却步。今天,我们要介绍的 LSPatch官方版,就是这样一款基于LSPosed核心的无Root Xposed框架解决方案。它不仅提…...
星火燎原:大数据时代的Spark技术革命在数字化浪潮席卷全球的今天,海量数据如同奔涌不息的洪流,传统的数据处理方式已难以满足实时、高效的需求。
星火燎原:大数据时代的Spark技术革命 在数字化浪潮席卷全球的今天,海量数据如同奔涌不息的洪流,传统的数据处理方式已难以满足实时、高效的需求。Apache Spark作为大数据领域的璀璨明星,凭借其卓越的性能和强大的功能,…...
Spark-Streaming(三)
一. kafka和flume的整合 任务需求一:利用flume监控某目录中新生成的文件,将监控到的变更数据发送给kafka,kafka将收到的数据打印到控制台 1. 在flume/conf/目录下添加flume-kafka.conf文件 配置文件如下 2. 启动flume和kafka消费者 3. 传入数据 查看fl…...
深入了解C# List集合及两种常见排序算法:插入排序与堆排序
在C#中,List<T> 是一种常用的集合类型,它提供了对动态数组的灵活操作,能够方便地添加、删除和访问元素。而排序算法是计算机科学中非常重要的部分,插入排序和堆排序是两种经典的排序方法。本文将详细讲解C#中 List<T>…...
【软件设计师】模拟题三
以下是另外10道不重复的软考-软件设计师模拟试题,答案及解析统一放在最后: 试题部分 在软件工程中,敏捷开发(Agile Development)的核心实践之一是? A. 严格的文档编写 B. 基于里程碑的计划…...
什么是CN2专线?全面解析中国电信的高性能网络服务
一、CN2专线的定义 CN2专线(China Telecom Next Carrier Network)是中国电信推出的新一代高性能网络专线服务,旨在满足企业对高速、稳定、安全网络连接的深度需求。它基于优化的网络架构设计,通过分布式路由、多路径传输等技术&a…...
5.4 AgentLite:轻量级库,便于构建任务导向的LLM Agent系统
AgentLite 是一个轻量级、模块化设计的开源框架,专注于构建任务导向的基于大语言模型(LLM)的智能代理(Agent)系统。与其他功能丰富但较为复杂的框架(如 LangChain 或 AutoGen)相比,A…...
shell脚本3
for语句(一种循环控制结构,用于遍历列表或者范围内的元素,并对每个元素执行一段代码语法格式 for 变量名 in 取值列表 do 命令序列 done 入门示例: for i in 1 2 3 4 5 6 # for i in {1..6} 或 for i in …...
Kafka Tool(Offset Explorer)国内下载: Kafka可视化连接工具
Kafka Tool(现称为 Offset Explorer)是一款专为 Apache Kafka 集群设计的可视化连接客户端工具,主要用于消息的可视化浏览、消费者偏移量的管理、主题的管理以及数据的实时监控。作为一款商用软件,它以其直观的用户界面和强大的功…...
【JAVA】高并发场景下,如何保证数据的一致性和系统的稳定性?
数据一致性 数据库事务:使用数据库的事务机制,确保一组数据的相关操作要么全部成功,要么全部失败,从而保证数据的一致性。例如,在转账操作中,涉及到转出账户扣款和转入账户加款两个操作,这两个…...
【Linux篇】理解信号:如何通过信号让程序听从操作系统的指令
信号的悄然到来:当操作系统发出‘警告’时 一.信号1.1 基本概念1.2 产生信号方式1.2.1 键盘产生信号1.2.2 系统调用产生信号1.2.2.1 kill1.2.2.2 raise1.2.2.3 abort 1.2.3 调用系统命令1.2.4 异常1.2.5 软件条件产生信号1.2.5.1 pause1.2.5.2 alarm 二. 最后 信号的…...
统计服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
文章目录 一、背景二、说明三、页面四、代码前端MonitorServiceProcessPage.vueMonitorServiceProcessTable.vueMonitorServiceProcessTableButton.vueaddMonitorTask.vueproductOperation.vueshowMonitorTask.vueMonitorSystemLog.vueMonitorTask.vueMonitorTaskLog.vueRealti…...
WSL 安装过程整理
WSL 安装过程整理 一、WSL 安装教程二、安装后小技巧1、安装位置2、常用命令 三、在 WSL2 中安装 perf: 一、WSL 安装教程 史上最全的WSL安装教程 WSL2 最新最全帮助小白一步步详细安装教程 在WSL2 root 和普通用户的切换 轻松搬迁!教你如何将WSL从C盘迁…...