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

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
http://www.xdnf.cn/news/2045.html

相关文章:

  • Java:反射
  • Linux基础IO(十)之静态库(后续出动态库)
  • 论分布式事务及其解决方案 架构师论文范文(考试笔记)
  • 计算机操作系统
  • 人口老龄化丨AI健康小屋如何实现防病于未然​
  • HTTP状态码
  • 使用Tortoise-ORM和FastAPI构建评论系统
  • Gmail安卓版邮件同步速度与隐私保护测评【体验对比】
  • 保安员证考试的理论知识有哪些重点?
  • 从原生检索到异构图:Native RAG、GraphRAG 与 NodeRAG 架构全景解析
  • 关注心理健康,开启心灵养生之旅
  • 如何用AI主动突出画面主体!涂鸦新方案助剪辑、工业巡检、医疗影像等领域,实现自动追踪+智能放大
  • BUUCTF-[ACTF新生赛2020]SoulLike
  • 伊克罗德信息亮相亚马逊云科技合作伙伴峰会,以ECRobot 智能云迁移助手在GenAI Tech Game比赛勇夺金牌!
  • 从零开始学Python游戏编程39-碰撞处理1
  • MySQL 从入门到精通
  • 【算法】单词搜索、最短距离
  • 增加首屏图片
  • MCP Server 实现笔记:开发者视角下的优缺点
  • MySQL InnoDB 存储引擎间隙锁(Gap Lock)
  • 《Pinia实战》10.手册
  • 数据结构(java)二叉树的基本操作
  • AI与思维模型【77】——PDCA思维模型
  • 1.2-1.3考研408计算机组成原理第一章 计算机系统概述
  • 【3】GD32 基础外设:GPIO、外部中断、DMA、定时器、实时时钟、看门狗
  • vue next()、next(“/“)、next({...to})、next({...to,replace:true})的区别
  • 机器人行业研究系列报告
  • 遥测终端机,推动灌区流量监测向数据驱动跃迁
  • 《遥测终端机:农业水价改革的智能助手》
  • python 环状图 (pycirclize)