news 2026/4/17 22:25:29

万能交换函数模板解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
万能交换函数模板解析

代码功能解析

该代码实现了一个通用的交换函数模板,能够交换任意相同类型的两个变量值。以下是具体分析:

模板函数定义

template<class T> void Swap(T& x, T& y) { T tmp = x; x = y; y = tmp; }
  • 使用template<class T>定义模板,T为泛型类型参数。
  • 函数参数为两个T类型的引用(T&),允许直接修改原始变量。
  • 通过临时变量tmp完成交换操作,避免值覆盖问题。

主函数测试

int main() { int x1 = 1; int y1 = 2; Swap(x1, y1); cout << x1 << ' ' << y1 << endl; double x2 = 1.1; double y2 = 2.2; Swap(x2, y2); cout << x2 << ' ' << y2 << endl; return 0; }
  • 测试整数交换:x1y1初始值为12,调用Swap后输出2 1
  • 测试浮点数交换:x2y2初始值为1.12.2,调用Swap后输出2.2 1.1

输出结果

2 1 2.2 1.1

关键点说明

  1. 模板实例化:编译器根据调用时的参数类型自动生成Swap<int>Swap<double>的具体实现。
  2. 引用传递:函数参数使用引用,确保直接操作原始变量而非副本。
  3. 类型安全:模板在编译时检查类型一致性,若尝试交换不同类型变量会导致编译错误。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 0:13:24

基于微信小程序实现前后端分离的车位共享系统

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参…

作者头像 李华
网站建设 2026/4/18 2:15:24

Vulkan教程(十五):动态渲染:Vulkan 1.3 管线简化新特性

目录 一、概述 二、管线渲染创建信息配置 三、命令缓冲记录 四、动态渲染的核心优势 五、后续章节预告 一、概述 在早期 Vulkan 版本中,若要完成图形管线的创建,必须通过渲染通道(Render Pass) 对象告知 Vulkan 渲染过程中会用到的帧缓冲附件信息。而 Vulkan 1.3 引入…

作者头像 李华
网站建设 2026/4/17 22:01:12

课程论文不是“作业”,是学术思维的“第一次正式亮相”——宏智树AI课程论文功能,让本科生也能写出“有科研感”的文章

在大学里&#xff0c;有一类被严重低估的写作&#xff1a;课程论文。 它常被当作“小作业”——拼凑几段文献、套个模板、赶在DDL前提交。 但真正有经验的导师都知道&#xff1a;课程论文&#xff0c;往往是学生学术生涯的“第一次正式亮相”。 它决定了你是否能被邀请进实验室…

作者头像 李华
网站建设 2026/4/18 10:46:00

pq|消消乐|定长滑窗

lc2067固定长度滑动窗口&#xff0c;遍历所有“k种字符各出现count次”的子串长度&#xff08;k*count&#xff09;统计符合条件的子串总数优雅变量的控制 只能不断的练习与感受...class Solution { public:int equalCountSubstrings(string s, int cnt){int n s.size(), res …

作者头像 李华
网站建设 2026/4/17 12:23:39

小白必看:微信小程序订阅消息从报错到精通

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成一个新手教学项目&#xff0c;分步骤演示&#xff1a;1) 基础按钮创建&#xff1b;2) 事件绑定教学&#xff1b;3) 订阅消息API正确调用方式&#xff1b;4) 故意制造requestSub…

作者头像 李华
网站建设 2026/4/18 4:02:04

零基础学网络:5分钟看懂链路聚合原理与配置

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成一个交互式链路聚合学习向导&#xff1a;1)用生活化比喻解释bonding原理(如高速公路车道合并) 2)分步可视化配置演示 3)嵌入式网络包传输动画 4)即时配置校验小测验 5)常见错误…

作者头像 李华