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

C++类模板编程练习(从基础到进阶)

一、基础模板类设计

  1. 泛型盒子(Box)
    实现一个 Box 类模板,存储任意类型的值,并提供获取/修改方法。
Box<int> intBox(42);
cout << intBox.get();  // 输出 42
intBox.set(100);
  1. 类型转换器(Converter)
    实现 Converter<T, U> 类模板,提供静态方法 convert,将类型 T 转换为 U。
double d = Converter<int, double>::convert(42);  // 42.0

二、模板与数学运算

  1. 泛型计算器(Calculator)
    实现 Calculator 类模板,支持加减乘除(编译时检查 T 是否为算术类型)。
Calculator<int> calc;
cout << calc.add(3, 5);  // 输出 8
  1. 固定大小数组(FixedArray)
    实现 FixedArray<T, N> 类模板,表示固定长度的数组。
FixedArray<float, 3> arr = {1.1f, 2.2f, 3.3f};
cout << arr[1];  // 输出 2.2

三、模板特化与条件逻辑

  1. 类型判别器(TypeInfo)
    实现 TypeInfo 类模板,通过静态成员变量输出类型名称。
cout << TypeInfo<int>::name;  // 输出 "int"
// 对指针类型特化:TypeInfo<int*>::name 输出 "int*"
  1. 布尔值包装器(BoolWrapper)
    特化一个模板类,根据布尔值选择不同行为。
BoolWrapper<true>::action();  // 输出 "True path"
BoolWrapper<false>::action(); // 输出 "False path"

四、多参数模板

  1. 泛型坐标点(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"

五、综合挑战

  1. 泛型单例模式(Singleton)
    实现线程安全的 Singleton 类模板。
Singleton<Logger>::getInstance().log("Hello");

2.编译期阶乘(Factorial)
用模板元编程实现编译期阶乘计算。

constexpr int val = Factorial<5>::value;  // 120

相关文章:

C++类模板编程练习(从基础到进阶)

一、基础模板类设计 泛型盒子&#xff08;Box&#xff09; 实现一个 Box 类模板&#xff0c;存储任意类型的值&#xff0c;并提供获取/修改方法。 Box<int> intBox(42); cout << intBox.get(); // 输出 42 intBox.set(100);类型转换器&#xff08;Converter&…...

基于物联网的智能家居安全防护系统设计

资料下载地址&#xff1a;基于物联网的智能家居安全防护系统仿真&#xff08;仿真代码&#xff09; 目录 一、功能介绍 二、仿真图 三、程序 一、功能介绍 1.单片机和app、OneNet云平台通过wifi进行通信 2.马达模拟家里的用电设备&#xff0c;可通过按键开关 3.可检测用电量…...

android jatpack Compose 多数据源依赖处理:从状态管理到精准更新的架构设计

Android Compose 多接口数据依赖管理&#xff1a;ViewModel 状态共享最佳实践 &#x1f4cc; 问题背景 在 Jetpack Compose 开发中&#xff0c;经常遇到以下场景&#xff1a; 页面由多个独立接口数据组成&#xff08;如 Part1、Part2&#xff09;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的宠物相亲配对系统设计旨在为宠物主人打造一个高效、智能的宠物社交与配对平台。系统采用前后端分离架构&#xff0c;前端基于Vue.js框架结合HTML/CSS/JavaScript构建动态交互界面&#xff0c;实现宠物信息展示、用户社交互动等功能&…...

AI大模型学习十二:‌尝鲜ubuntu 25.04 桌面版私有化sealos cloud + devbox+minio对象存储测试和漫长修改之路

一、说明 前面已经安装完成&#xff0c;这里我们测试对象存储 AI大模型学习十一&#xff1a;‌尝鲜ubuntu 25.04 桌面版私有化sealos cloud devboxminio&#xff0c;实战运行成功-CSDN博客https://blog.csdn.net/jiangkp/article/details/147424823?spm1011.2415.3001.5331 二…...

身份与访问管理(IAM):零信任架构下的认证授权技术与实战

身份与访问管理&#xff08;IAM&#xff09;&#xff1a;零信任架构下的认证授权技术与实战 在网络安全防御体系中&#xff0c;身份与访问管理&#xff08;Identity and Access Management, IAM&#xff09;是守护数字资产的“数字门禁系统”。随着远程办公和多云架构的普及&a…...

潮了 低配电脑6G显存生成60秒AI视频 本地部署/一键包/云算力部署/批量生成

最近发现了一个让人眼前一亮的工具——FramePack&#xff0c;它能用一块普通的6GB显存笔记本GPU&#xff0c;生成60秒电影级的高清视频画面&#xff0c;效果堪称炸裂&#xff01;那么我们就把他本地部署起来玩一玩、下载离线一键整合包&#xff0c;或者是用云算力快速上手。接下…...

高防IP+CDN组合:电商大促的“双保险”防护方案

引言 电商大促期间&#xff0c;平台流量呈爆发式增长&#xff0c;既要应对瞬时激增的访问量&#xff0c;又要防范黑客趁机发起的DDoS攻击、恶意爬虫等威胁。单一防护手段往往难以兼顾性能与安全&#xff0c;而高防IPCDN组合通过“流量清洗加速分发”的双重机制&#xff0c;为电…...

“IAmMusicFont.com“:将音乐变成视觉

很高兴向大家介绍——IAmMusicFont.com&#xff0c;这是一个专为音乐爱好者和设计师打造的在线字体生成器&#xff0c;灵感源自Playboi Carti 2025年专辑《MUSIC》&#xff08;又称"I Am Music"&#xff09;的标志性封面设计。 什么是"I am music font"&a…...

C++入门(下)

本文为个人学习笔记&#xff0c;如有错误欢迎批评指正&#xff0c;如有侵权&#xff0c;请联系删除。 今日名言&#xff1a; 好运只是个副产品&#xff0c;只有当你不带任何私心杂念&#xff0c;单纯的去做事情时&#xff0c;他才会降临。 上一篇文章我们讲了C入门的一部分内容…...

ubuntu22.04 命令行修改静态ip

传统interfaces文件配置&#xff08;适用于旧版&#xff09;即便我们已经在桌面上配置了固定ip 这里也可以修改 ‌编辑配置文件‌ 修改/etc/network/interfaces&#xff08;需安装net-tools&#xff09;&#xff1a; # 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环境的过程&#xff0c;方便自己日后回顾&#xff0c;也可以给有需要的人提供帮助。 # 2…...

深度学习--自然语言处理统计语言与神经语言模型

文章目录 前言一、语言转换方法1、数据预处理2、特征提取3、模型输入4、模型推理 二、语言模型1、统计语言模型1) 机器学习词向量转换2&#xff09;解释&#xff1a;3) 统计语言模型存在的问题 2、神经语言模型1&#xff09;one—hot编码2&#xff09;解决维度灾难3&#xff09…...

linux ptrace 图文详解(七) gdb、strace跟踪系统调用

目录 一、gdb/strace 跟踪程序系统调用 二、实现原理 三、代码实现 四、总结 &#xff08;代码&#xff1a;linux 6.3.1&#xff0c;架构&#xff1a;arm64&#xff09; One look is worth a thousand words. —— Tess Flanders 相关链接&#xff1a; linux ptrace 图…...

Feign接口调用失败降级机制

是的&#xff0c;通过 FallbackFactory 实现的降级逻辑在 Feign 接口调用失败时会被触发&#xff0c;但需要注意以下关键点以确保降级生效&#xff1a; 一、代码有效性分析 降级逻辑是否生效&#xff1f; • 是的&#xff0c;当 Feign 调用 BaseServiceFeign 接口的 updateMoni…...

系统架构-安全架构设计

概述 对于信息系统来说&#xff0c;威胁有&#xff1a;物理环境&#xff08;最基础&#xff09;、通信链路、网络系统、操作系统、应用系统、管理系统 物理安全&#xff1a;系统所用设备的威胁&#xff0c;如自然灾害、电源故障通信链路安全&#xff1a;在传输线路上安装窃听…...

python实现简单的UI交互

文章目录 1. 基础打印 覆盖同一行2. 多行动画效果3. 彩色文本&#xff08;Windows/macOS/Linux&#xff09;4. 输入交互5. 异步输入与非阻塞显示6. 高级控制台 UI 库 可以通过控制台打印实现简单的「伪UI交互」&#xff0c;尤其适合展示进度、动态文本或轻量级状态反馈。以下是…...

高频面试题:如何保证数据库和es数据一致性

背景 在实际项目开发中&#xff0c;我们经常将MySQL作为业务数据库&#xff0c;ES作为查询数据库&#xff0c;用来实现读写分离&#xff0c;缓解MySQL数据库的查询压力&#xff0c;应对海量数据的复杂查询&#xff0c;这其中有一个很重要的问题&#xff0c;就是如何实现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 报错如下 解决办法&#xff1a; 清除npm缓存 npm cache clean -force 2.阿里云镜像证书过期&#xff0c;报错如下 解决办法&#xff1a; 更换阿里云镜像地址 #原来的地址是&#xff1a;https://registry.npm.taobao.org/ cnpm confi…...

Electron Forge【实战】阿里百炼大模型 —— AI 聊天

获取 apiKey 登录并开通阿里云百炼 https://bailian.console.aliyun.com/#/home 新人有半年免费的使用福利&#xff0c;在模型详情中&#xff0c;可以查看剩余的免费额度 https://bailian.console.aliyun.com/?tabmodel#/model-market/detail/qwen-turbo 在下方链接中创建 ap…...

Vue3实现高仿word自定义颜色选择器组件(支持 v-model)

目录 Vue3实现高仿word自定义颜色选择器组件&#xff08;支持 v-model&#xff09;需求分析大致效果需求功能实现所需技术从UI哪里拿到主题颜色标准色进行子主组件的v-model实现子组件布局实现子组件样式实现子组件全部代码&#xff1a;父组件调用方式完结 Vue3实现高仿word自定…...

.NET中,const和readonly区别

在.NET中&#xff0c;const和readonly都用于定义不可变的值&#xff0c;但它们在行为和使用场景上有显著区别。以下是两者的详细对比&#xff1a; 初始化时机 • const ◦ 编译时常量&#xff0c;必须在声明时赋值。 ◦ 值在编译时确定&#xff0c;并被直接嵌入到IL代码中&…...

力扣-206.反转链表

题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 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 &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返…...

CSS Position 属性完全指南

CSS 中的 position 属性是布局的基础&#xff0c;它决定了元素在页面中的定位方式。理解各种定位值的行为和适用场景对于构建灵活、响应式的布局至关重要。 position 属性的五个主要值 1. static&#xff08;默认值&#xff09; 元素遵循正常的文档流不受 top, right, botto…...

热度上升,25西电机电工程学院(考研录取情况)

1、机电工程学院各个方向 2、机电工程学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、力学25年相较于24年下降35分&#xff0c;为255分 2、机械工程25年相较于24年下降15分&#xff0c;为320分 3、仪器科学与技术25年相较于24年上升35分&#xff0c;为…...

R7周:糖尿病预测模型优化探索

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客 &#x1f356; 原作者&#xff1a;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&#xff0c;PushButton&#xff0c;lineEdit等都是基于QWidget延展出来的 并不是完整的窗口&#xff0c;而是作为窗口的一部分 真正的窗口是QMainWindow 菜单栏 Qt中的菜单栏是通过QMenuBar这个类来实现的&#xff0c;一个主窗口最多只有一个菜单栏&#xff0c;位于主…...

OceanBase 复合索引指南

一、 什么是复合索引&#xff0c;与单列索引的区别是什么 1.1 什么是复合索引 复合索引是指在数据库表中由两个或更多列共同构成的索引&#xff0c;也称多列索引。其独特之处在于&#xff0c;它并非仅针对单一列建立索引&#xff0c;而是对多个列的组合进行索引&#xff0c;从…...

蛋白质大语言模型ESM介绍

ESM(Evolutionary Scale Modeling)是 Meta AI Research 团队开发的一系列用于蛋白质的预训练语言模型。这些模型在蛋白质结构预测、功能预测和蛋白质设计等领域展现出了强大的能力。以下是对 ESM 的详细介绍: 核心特点 大规模预训练:基于大规模蛋白质序列数据进行无监督学…...

回归测试:保障软件质量的重要防线

在软件开发的生命周期中&#xff0c;变更无处不在——新功能添加、缺陷修复、性能优化或代码重构。但每一次变更都可能像投入平静水面的石子&#xff0c;引起意想不到的涟漪效应。这就是回归测试(Regression Testing)存在的意义&#xff0c;它是软件质量保障体系中不可或缺的一…...

51单片机中断

80C51 单片机的中断源及其默认优先级&#xff08;从高到低&#xff09;&#xff1a; 优先级中断源中断号1️⃣外部中断 0 &#xff08;INT0&#xff09;IE0&#xff0c;编号 02️⃣定时器 0 &#xff08;T0&#xff09;TF0&#xff0c;编号 13️⃣外部中断 1 &#xff08;INT…...

Ollama 常见命令速览:本地大模型管理指南

Ollama 常见命令速览&#xff1a;本地大模型管理指南 一、什么是 Ollama&#xff1f; Ollama 是一个轻量级工具&#xff0c;允许用户在本地快速部署和运行大型语言模型&#xff08;LLM&#xff09;&#xff0c;如 Llama、DeepSeek、CodeLlama 等。其命令行工具设计简洁&#…...

LSPatch官方版:无Root Xposed框架,自由定制手机体验

在Android设备的自定义和优化过程中&#xff0c;Xposed框架一直是一个强大的工具。然而&#xff0c;许多用户因为Root操作的复杂性和风险而望而却步。今天&#xff0c;我们要介绍的 LSPatch官方版&#xff0c;就是这样一款基于LSPosed核心的无Root Xposed框架解决方案。它不仅提…...

星火燎原:大数据时代的Spark技术革命在数字化浪潮席卷全球的今天,海量数据如同奔涌不息的洪流,传统的数据处理方式已难以满足实时、高效的需求。

星火燎原&#xff1a;大数据时代的Spark技术革命 在数字化浪潮席卷全球的今天&#xff0c;海量数据如同奔涌不息的洪流&#xff0c;传统的数据处理方式已难以满足实时、高效的需求。Apache Spark作为大数据领域的璀璨明星&#xff0c;凭借其卓越的性能和强大的功能&#xff0c…...

Spark-Streaming(三)

一. kafka和flume的整合 任务需求一:利用flume监控某目录中新生成的文件&#xff0c;将监控到的变更数据发送给kafka&#xff0c;kafka将收到的数据打印到控制台 1. 在flume/conf/目录下添加flume-kafka.conf文件 配置文件如下 2. 启动flume和kafka消费者 3. 传入数据 查看fl…...

深入了解C# List集合及两种常见排序算法:插入排序与堆排序

在C#中&#xff0c;List<T> 是一种常用的集合类型&#xff0c;它提供了对动态数组的灵活操作&#xff0c;能够方便地添加、删除和访问元素。而排序算法是计算机科学中非常重要的部分&#xff0c;插入排序和堆排序是两种经典的排序方法。本文将详细讲解C#中 List<T>…...

【软件设计师】模拟题三

以下是另外10道不重复的软考-软件设计师模拟试题&#xff0c;答案及解析统一放在最后&#xff1a; ​​试题部分​​ ​​在软件工程中&#xff0c;敏捷开发&#xff08;Agile Development&#xff09;的核心实践之一是&#xff1f;​​ A. 严格的文档编写 B. 基于里程碑的计划…...

什么是CN2专线?全面解析中国电信的高性能网络服务

一、CN2专线的定义 CN2专线&#xff08;China Telecom Next Carrier Network&#xff09;是中国电信推出的新一代高性能网络专线服务&#xff0c;旨在满足企业对高速、稳定、安全网络连接的深度需求。它基于优化的网络架构设计&#xff0c;通过分布式路由、多路径传输等技术&a…...

5.4 AgentLite:轻量级库,便于构建任务导向的LLM Agent系统

AgentLite 是一个轻量级、模块化设计的开源框架&#xff0c;专注于构建任务导向的基于大语言模型&#xff08;LLM&#xff09;的智能代理&#xff08;Agent&#xff09;系统。与其他功能丰富但较为复杂的框架&#xff08;如 LangChain 或 AutoGen&#xff09;相比&#xff0c;A…...

shell脚本3

for语句&#xff08;一种循环控制结构&#xff0c;用于遍历列表或者范围内的元素&#xff0c;并对每个元素执行一段代码语法格式 for 变量名 in 取值列表 do 命令序列 done 入门示例&#xff1a; for i in 1 2 3 4 5 6 # for i in {1..6} 或 for i in …...

Kafka Tool(Offset Explorer)国内下载: Kafka可视化连接工具

Kafka Tool&#xff08;现称为 Offset Explorer&#xff09;是一款专为 Apache Kafka 集群设计的可视化连接客户端工具&#xff0c;主要用于消息的可视化浏览、消费者偏移量的管理、主题的管理以及数据的实时监控。作为一款商用软件&#xff0c;它以其直观的用户界面和强大的功…...

【JAVA】高并发场景下,如何保证数据的一致性和系统的稳定性?

数据一致性 数据库事务&#xff1a;使用数据库的事务机制&#xff0c;确保一组数据的相关操作要么全部成功&#xff0c;要么全部失败&#xff0c;从而保证数据的一致性。例如&#xff0c;在转账操作中&#xff0c;涉及到转出账户扣款和转入账户加款两个操作&#xff0c;这两个…...

【Linux篇】理解信号:如何通过信号让程序听从操作系统的指令

信号的悄然到来&#xff1a;当操作系统发出‘警告’时 一.信号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&#xff1a; 一、WSL 安装教程 史上最全的WSL安装教程 WSL2 最新最全帮助小白一步步详细安装教程 在WSL2 root 和普通用户的切换 轻松搬迁&#xff01;教你如何将WSL从C盘迁…...