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

c++学习:函数模板+实战

目录

函数模板

思考

如果两个参数的类型不一样可以下面这么写

如果有指定返回参数可以下面这么写

实战 找出三个数中最大的一个


函数模板

  • 实际上就是建立一个通用函数,其函数返回值类型和形参类型不具体指定,用一个虚拟的类型来代表
  • template 是一个关键字 ,表示下面定义的是一个模板
  • typename 也是一个关键字,后面跟的T是一个虚拟的数据类型,可以用class来代替
  • 其函数返回值数据类型 和 形参的数据类型 不具体指定,用一个虚拟的类型在代表

思考

void _swap(int &a,int &b)
{a = a+b;b=a-b;a=a-b;
}
void _swap(double &a,double &b)
{a = a+b;b=a-b;a=a-b;
}
void _swap(char &a,char &b)
{a = a+b;b=a-b;a=a-b;
}

不断重写swap函数,太过麻烦

我们可以建立一个通用板的函数

template<typename T>
void _swap(T &a,T &b)
{cout<<"template"<<endl;a = a+b;b=a-b;a=a-b;
}int a = 10,b=20;
当_swap(a,b);调用后
会自动生成void _swap(int  &a,int  &b)

如果两个参数的类型不一样可以下面这么写

template<typename T,typename Tx>
void _swap(T &a,Tx &b)
{cout<<"template"<<endl;a = a+b;b=a-b;a=a-b;
}

如果有指定返回参数可以下面这么写

template<typename T=int>
T _max(T a,T b)
{T c;return a>b?a:b;
}int a = 10,b=20;
_max<int>(a,b);---->int _max(int a,int b)

实战 找出三个数中最大的一个

template<typename T>
T _max(T a,T b,T c)
{return a>b ? (a>c?a:c) : (b>c?b:c);
}cout<<max<int>(10,20,30)<<endl;

如果在类中实现

class Max
{
public:Max();template<typename T>T max(T a,T b,T c);
};如果有max.cpp  max.h,那下面模板函数定义一定要放到.h里,上面的也可以放到.h里
template<typename T>
T Max::max(T a,T b,T c)
{return a>b ? (a>c?a:c) : (b>c?b:c);
}调用方法如下Max mya;cout<<mya.max<int>(10,20,30)<<endl;

相关文章:

c++学习:函数模板+实战

目录 函数模板 思考 如果两个参数的类型不一样可以下面这么写 如果有指定返回参数可以下面这么写 实战 找出三个数中最大的一个 函数模板 实际上就是建立一个通用函数&#xff0c;其函数返回值类型和形参类型不具体指定&#xff0c;用一个虚拟的类型来代表template 是一个…...

three.js gltf后处理颜色异常(伽马校正)

效果&#xff1a; 应用了伽马校正&#xff0c;好像效果不明显 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"><…...

面试经典150题(55-58)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第二十四天&#xff09;完成了4道(55-58)150&#xff1a; 55.&#xff08;19. 删除链表的倒数第 N 个结点&#xff09;题目描述&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff…...

如果一个n位正整数等于其各位数字的n次方之和

❤ 厾罗 如果一个n位正整数等于其各位数字的n次方之和 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 5^3 3^3 153。 1000以内的阿姆斯特朗数&#xff1a; 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。 以下代码用于检测用户输…...

solidity显示以太坊美元价格

看过以太坊白皮书的都知道&#xff0c;以太坊比较比特币而言所提升的地方中&#xff0c;我认为最重要的一点就是能够访问外部的数据&#xff0c;这一点在赌博、金融领域应用会很广泛&#xff0c;但是区块链是一个确定的系统&#xff0c;包括里面的所有数值包括交易ID等都是确定…...

ChatGPT学习笔记——大模型基础理论体系

1、ChatGPT的背景与意义 近期,ChatGPT表现出了非常惊艳的语言理解、生成、知识推理能力, 它可以极好的理解用户意图,真正做到多轮沟通,并且回答内容完整、重点清晰、有概括、有条理。 ChatGPT 是继数据库和搜索引擎之后的全新一代的 “知识表示和调用方式”如下表所示。 …...

Termius for Mac/Win:一款功能强大的终端模拟器、SSH 和 SFTP 客户端软件

随着远程工作和云技术的普及&#xff0c;对于高效安全的远程访问和管理服务器变得至关重要。Termius&#xff0c;一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件&#xff0c;正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案&#xff0c;允许用户通过单一平…...

python如何读取被压缩的图像

读取压缩的图像数据&#xff1a; PackBits 压缩介绍&#xff1a; CCITT T.3 压缩介绍&#xff1a; 读取压缩的图像数据&#xff1a; 在做图像处理的时候&#xff0c;平时都是使用 函数io.imread() 或者是 函数cv2.imread( ) 函数来读取图像数据&#xff0c;很少用PIL.Image…...

华为OD机试 - 寻找最优的路测线路(Java JS Python C)

题目描述 评估一个网络的信号质量,其中一个做法是将网络划分为栅格,然后对每个栅格的信号质量计算。 路测的时候,希望选择一条信号最好的路线(彼此相连的栅格集合)进行演示。 现给出 R 行 C 列的整数数组 Cov,每个单元格的数值 S 即为该栅格的信号质量(已归一化,无单…...

互联网演进历程:从“全球等待”到“全球智慧”的技术革新与商业变革

文章目录 一、导言二、World Wide Wait (全球等待)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 三、World Wide Web (万维网)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 四、World Wide Wisdom (全球智慧)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 五、…...

计算机组成原理——总线

总线特点 1.1. 分时&#xff1a;分时是指同一时刻只允许有一个部件向总线发送信息&#xff0c;若系统中有多个部件&#xff0c;则它们只能分时地向总线发生信息。 1.2. 共享&#xff1a;共享是指总线上可以挂接多个部件&#xff0c;各个部件之间互相交换的信息都可以通过这组线…...

2023.12.27 关于 Redis 数据类型 List 常用命令

目录 List 类型基本概念 List 类型特点 List 操作命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP RPOP LINDEX LINSERT LREM LTRIM LSET 阻塞版本的命令 阻塞版本 和 非阻塞版本的区别 BLPOP & BRPOP List 类型基本概念 Redis 中的列表&#xff08;list&am…...

【Web】vulhub-httpd apache解析漏洞复现(1)

目录 ①CVE-2017-15715 ②apache_parsing_vulnerability ①CVE-2017-15715 贴出源码&#xff1a; <?php if(isset($_FILES[file])) {$name basename($_POST[name]);$ext pathinfo($name,PATHINFO_EXTENSION);if(in_array($ext, [php, php3, php4, php5, phtml, pht]))…...

市场复盘总结 20240103

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整 昨日回顾: 方法一:指标选股 select * from dbo.ResultAll where 入选类型 like %指标选股% and 入选日期=20240103;方法二:趋势选股法 1、最低价持续3日上涨 2、均价…...

Java技术栈 —— Redis的雪崩、穿透与击穿

Java技术栈 —— Redis的雪崩、穿透与击穿 〇、实验的先导条件&#xff08;NginxJmeter&#xff09;一、Redis缓存雪崩、缓存穿透、缓存击穿1.1 雪崩1.2 穿透1.3 击穿 二、Redis应用场景——高并发2.1 单机部署的高并发问题与解决&#xff08;JVM级别锁&#xff09;2.2 集群部署…...

Scala知识点——App类

我们在代码中一般程序都是是通过main方法进入。但是在scala中提供了一个App类&#xff0c;通过继承可以实现不用显式的调用main方法就能运行。 App类中实现了main方法&#xff1a;...

(vue)增加行,对应行删除

(vue)增加行&#xff0c;对应行删除 效果&#xff1a; 代码&#xff1a; <div v-for"(ele,i) of algorithmList" :key"i"><el-form-item label"模型类型"><el-selectv-model"ele.algorithmId"placeholder"选择模…...

案例088:基于微信小程序的校车购票平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…...

pytorch集智-1安装与简单使用

1 安装 1.1 简介 pytorch可用gpu加速&#xff0c;也可以不加速。gpu加速是通过cuda来实现&#xff0c;cuda是nvidia推出的一款运算平台&#xff0c;它可以利用gpu提升运算性能。 所以如果要装带加速的pytorch&#xff0c;需要先装cuda&#xff0c;再装pytorch&#xff0c;如…...

『番外篇六』SwiftUI 取得任意视图全局位置的三种方法

概览 在 SwiftUI 开发中,利用描述性代码我们可以很轻松的构建各种丰富多彩的视图。我们可以设置它们的大小、位置、颜色并应用不计其数的修改器。 但是,小伙伴们是否想过在 SwiftUI 中如何获取一个视图的全局位置坐标呢? 在本篇博文中,您将学到如下内容: 概览1. SwiftU…...

Anno 1800模组加载器:企业级XML智能合并与高性能游戏扩展架构实现指南

Anno 1800模组加载器&#xff1a;企业级XML智能合并与高性能游戏扩展架构实现指南 【免费下载链接】anno1800-mod-loader The one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods. 项目地址: https://gitcode.com…...

2026届学术党必备的五大AI科研神器实测分析

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 降 AI 指令&#xff0c;是一种合规优化工具&#xff0c;用于调试 AI 生成逻辑&#xff0c;以…...

Odoo开源频道应用:构建企业级内容管理系统的完整指南

1. 项目概述&#xff1a;一个为Odoo生态注入活力的开源频道应用如果你是一名Odoo开发者或实施顾问&#xff0c;肯定遇到过这样的场景&#xff1a;客户需要一个功能强大、界面现代的“新闻”或“博客”模块&#xff0c;但Odoo原生的“网站博客”应用要么功能过于基础&#xff0c…...

Claude智能优化器:提升大模型工具调用准确性的工程实践

1. 项目概述与核心价值最近在折腾大语言模型应用开发时&#xff0c;我一直在思考一个问题&#xff1a;如何让像Claude这样的顶级AI助手&#xff0c;在回答复杂问题时&#xff0c;能更稳定、更聪明地调用外部工具和函数&#xff1f;直接调用API&#xff0c;模型有时会“犯懒”或…...

美国司机监控基础设施复杂,多州出台隐私保护法律应对,你的隐私还好吗?

追踪美国司机监控现状追踪美国司机的监控基础设施如今已发展得远比多数人想象的复杂。最初简单的车牌记录技术&#xff0c;如今已演变成能识别面部、标记异常出行模式并构建详细活动档案的 AI 系统&#xff0c;且这一切都在被监控者毫不知情的情况下进行。据民权组织称&#xf…...

告别繁琐配置:Jprotobuf注解驱动序列化实战(新手友好)

1. 为什么选择Jprotobuf注解方案 如果你正在用Java开发需要频繁序列化数据的应用&#xff0c;比如缓存系统、微服务通信或者游戏服务器&#xff0c;肯定遇到过这样的纠结&#xff1a;用JSON虽然方便但性能差体积大&#xff0c;用Protobuf性能好但配置太麻烦。我去年做电商订单系…...

AITranslate:本地化AI翻译工作流框架,构建可编程翻译管道

1. 项目概述与核心价值最近在折腾一个挺有意思的项目&#xff0c;叫AITranslate。这名字一看就知道&#xff0c;它想用AI来干翻译的活儿。但说实话&#xff0c;现在市面上翻译工具多如牛毛&#xff0c;从老牌的谷歌翻译、DeepL&#xff0c;到各种大厂出的AI翻译插件&#xff0c…...

OpenManus-RL:基于强化学习优化大语言模型智能体决策的完整框架

1. 项目概述与核心价值如果你正在关注大语言模型智能体领域&#xff0c;尤其是如何让模型从“会聊天”进化到“会做事”&#xff0c;那么OpenManus-RL这个项目绝对值得你投入时间研究。它不是一个简单的工具库&#xff0c;而是一个由UIUC-Ulab和MetaGPT团队联合发起的、以直播形…...

基于Vue 3与UnoCSS构建轻量级个人导航页:从零部署到高级定制

1. 项目概述&#xff1a;一个轻量级、可定制的个人导航页 最近在折腾自己的浏览器主页&#xff0c;厌倦了那些臃肿、广告满天飞的默认页面&#xff0c;也受够了每次都要在书签栏里翻找常用链接。作为一个喜欢把一切工具都“私有化”和“个性化”的开发者&#xff0c;我决定自己…...

Windows平台PDF处理终极解决方案:Poppler预编译包深度解析

Windows平台PDF处理终极解决方案&#xff1a;Poppler预编译包深度解析 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 在Windows环境下处理PDF文件…...