C++模板——(2)函数模板的声明和使用

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
勤奋,机会,,乐观是成功的三要素!

一起加油!

目录

🔑说明: 

例:编写一个函数模板,求三个数中的最大值。 

🔑说明:

例:编写一个函数模板,对一维数组进行排序。

🔑说明: 

总结:

共勉: 


        将很多个处理不同数据类型、相同逻辑功能的函数抽象成一个统一的函数,称为函数模板。函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来表示。这个通用函数就是函数模板。

        函数模板的一般定义格式如下:

template <class T>或<typename T>
返回类型函数名(参数表)

{

                        函数体

}

🔑说明: 

  • (1)template是定义函数模板的关键字,总是放在模板定义和声明的最前面。
  • (2)<classT>或<typenameT>必须用尖括号“<>”括起来,其中,T为类型参数,T实际上是一个虚拟的类型名,可以用来指定函数模板本身的参数类型、返回值类型,以及局部变量,但是此时并未指定。当使用函数模板时,T 就会被替换为某种实际的数据类型(例如,int、char、float 等 。T还可以被符合规范的标识符替换。
  • (3)后面函数的定义方式与之前提到的普通函数的定义方式类似。 

        下面通过具体的例子说明函数模板的定义和使用方法。

例:编写一个函数模板,求三个数中的最大值。 

#include<iostream>
using namespace std;
template<class T>
T Max(T a,T b,T c)
{
	T max=a>b?(a>c?a:c):(b>c?b:c);
	return max;
} 
int main()
{
	int ia=78,ib=64,ic=18;
	cout<<"三个整数最大值为:"<<Max(ia,ib,ic)<<endl;
	float fa=3.14,fb=84.4,fc=15.9;
	cout<<"三个浮点数最大值为:"<<Max(fa,fb,fc)<<endl;
    char ca='A',cb='d',cc='m';
	cout<<"三个字符最大值为:"<<Max(ca,cb,cc)<<endl;
	return 0;
}

🔑说明:

        该程序定义了一个函数模板T Max(T a,T b,T c),模板参数类型是T,在使用函数模板时,T 被替换为某种实际的数据类型。在调用Max(ia,ib,ic)时,T代表int 类型;在调用Max(fa,fb,fc)时,T代表float 类型;在调用Max(ca,cb,cc)时,T代表char 类型,这样函数模板T Max(T a,T b,T c)通过简单的代码就可以实现不同数据类型的大小比较,提高了代码的复用性,对于其他数据类型,如double、long 等类型同样适用。 

例:编写一个函数模板,对一维数组进行排序。

#include<iostream>
#include<cstring>
using namespace std;
template<class T>
void sort(T*a,int n)
{
	int i,j;
	T temp;
	for(i=1;i<n;i++)
	{
		for(j=0;j<n-i;j++)
		{
			if(a[j]>a[j+1])
			{
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
}
int main()
{
	int ia[10]={78,99,45,16,75,94,51,61,75,19};
	float fa[6]={23.4,78.5,15.9,67.1,94.5,6.1};
	char str[]="international";
	sort(ia,10);
	cout<<"10个整数排序为:";
	for(int i=0;i<10;i++)
	{
		cout<<ia[i]<<" "; 
	}
	cout<<endl;
	sort(fa,6);
	cout<<"6个小数排序为:";
	for(int i=0;i<6;i++)
	{
		cout<<fa[i]<<" ";
	} 
	cout<<endl;
	sort(str,strlen(str));
	cout<<"字符排序为:";
	for(int i=0;str[i];i++)
	{
		cout<<str[i]<<" ";
	}
	cout<<endl;
	return 0;
}

🔑说明: 

        该程序中定义了一个函数模板 void sort(T*a,int n),模板类型参数是T当需要对整数或浮点数或字符型数组进行排序时,T就被替换为相应的int、float、char 类型。

总结:

  •         将很多个处理不同数据类型、相同逻辑功能的函数抽象成一个统一的函数,称为函数模板。 
  •         template是定义函数模板的关键字,总是放在模板定义和声明的最前面。
  •         <classT>或<typenameT>必须用尖括号“<>”括起来,其中,T为类型参数。
  •         后面函数的定义方式与之前提到的普通函数的定义方式类似。

共勉: 

        以上就是我对C++模板——(2)函数模板的声明和使用的理解,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++模板的理解,请持续关注我哦!!! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302230.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【书生大模型00--开源体系介绍】

书生大模型开源体系介绍 0 通用人工智能1 InternLM性能及模型2 从模型到应用 大模型成为目前很热的关键词&#xff0c;最热门的研究方向&#xff0c;热门的应用&#xff1b;ChatGPT的横空出世所引爆&#xff0c;快速被人们上手应用到各领域&#xff1b; 0 通用人工智能 相信使…

物理机搭建hive

一、修改Hadoop配置 修改core-site.xml 配置yarn-site.xml 分发文件&#xff0c;然后重启集群 二、 Hive解压安装 上传文件 添加hive环境便量&#xff0c;source生效 启动高可用集群&#xff0c;启动hive 三、配置mysql元数据库 检查当前系统是否安装过Mysql&#xf…

Python采集微博评论做词云图

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.10 Pycharm 第三方模块使用: import requests >>> pip install requests import wordcloud >>> pip install wordclou…

软件工程造价师证书有用吗?难不难考?

&#x1f3af;软件工程造价师证书是有用的&#xff0c;它证明了持有人具备评估和估算软件开发cheng本、进度和资源规划的能力。✔️在IT行业中&#xff0c;受高度重视&#xff0c;特别是在软件开发和项目管理领域。 &#x1f469;软件工程造价师考试难易程度因人而异。该证书需…

Java技术专题:「入门到精通系列」深入探索常用的六种加密技术和实现

文章目录 1. 引言2. 对称加密3. 非对称加密4. 哈希算法5. 消息摘要6. 数字签名7. 数字证书8. 拓展功能与未来展望 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&am…

【Python学习】Python学习5-条件语句

目录 【Python学习】Python学习5-条件语句 前言if语句if语句判断条件简单的语句组参考 文章所属专区 Python学习 前言 本章节主要说明Python的条件语句&#xff0c;Python条件语句是通过一条或多条语句的执行结果&#xff08;True或者False&#xff09;来决定执行的代码块。 …

这些专利知识你知道吗?

专利作为一种重要的知识产权保护形式。专利不仅成为了企业核心竞争力的重要组成部分&#xff0c;也成为了国家创新发展的重要支撑。 专利是指国家专利主管机关授予发明创造申请人的一种专有权&#xff0c;这种专有权具有独占性、排他性和法律强制性&#xff0c;能够为持有者带来…

Rough.js:创建手绘、草图外观的图形

Rough.js 是一个小型的(<9kB gzipped)图形库&#xff0c;它可以让你以草图、手绘风格进行绘制。 该库定义了绘制直线、曲线、圆弧、多边形、圆和椭圆的基元。它还支持绘制 SVG 路径。 Rough.js 可以同时处理 Canvas 和 SVG。 安装 从npm安装&#xff1a; npm install --s…

Linux文件系统和日志分析

一、inode表结构 1. inode表 inode号在同一个设备上是唯一的。 inode号是有限资源&#xff0c;它的大小和磁盘大小有关。 访问文件的基本流程 根据文件夹的文件名和inode号的关系找到对应的inode表&#xff0c;再根据inode表&#xff08;属主 属组&#xff09;当中的指针找到磁…

基于SSM的校内信息服务发布系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

NX/UG二次开发—C\C++开发单个DLL支持多版本NX一种方法

1、去除附加包含目录下的NX相关的lib文件&#xff1a; 2、从对应的dll导出ufun函数和NXopen函数&#xff1a; libufun.dll; libufun_cam.dll; libufun_cae.dll; libufun_die.dll; libufun_vdac.dll; libufun_weld.dll; libugopenint.dll; libugopenint_cae.dll; libugopenint_…

电子版报刊怎么制作

制作电子版报刊是许多媒体和出版机构正在探索的一种新的出版方式。随着数字技术的不断发展&#xff0c;电子版报刊已经成为了一种越来越受欢迎的选择。那么&#xff0c;如何制作电子版报刊呢&#xff1f; 首先&#xff0c;你需要确定你的报刊的主题和受众。这将帮助你选择适合的…

KPU特征识别

前面的颜色识别、二维码识别都是使用了一些简单的图像处理功能&#xff0c;而更高 级的机器视觉就需要使用 KPU 。可以简单类别为计算机的 GPU &#xff08;显卡&#xff09;&#xff0c;本质是 实现高速的图像数据运算 我们来简单介绍一下 K210 的 KPU 。 KPU 是 K21…

Cadence记录

第三讲原理图的绘制和后续处理 一、绘制原理图 1.同一个页面内创建电气互联 连线方式2种 使用连线(wire) 使用网络名&#xff08;net alias&#xff09; 检查网络是否连接&#xff0c;如图显示则好着 2.不同页面之间创建电气互联 左右之分&#xff0c;表示在这个页面的信号是…

锁原理剖析-LockSupport工具类

LockSupport工具类 JDK中的rt.jar包里面的LockSupport是个工具类&#xff0c;它的主要作用是挂起和唤醒线程&#xff0c;该工具类是创建锁和其他同步类的基础。 LockSupport类与每个使用它的线程都会关联一个许可证&#xff0c;在默认情况下调用LockSupport类的方法的线程是不…

第2章 JavaScript基本语法

学习目标 了解什么是变量&#xff0c;能够说出变量的概念 掌握变量的命名规则&#xff0c;能够为变量命名 掌握变量的声明与赋值&#xff0c;能够声明变量并为其赋值 熟悉数据类型的分类&#xff0c;能够说出JavaScript中有哪些数据类型 掌握常用的基本数据类型&#xff0c…

【经验分享】如何看论文的分区、SCI检索号、EI检索号等信息

0 前言 一般而言&#xff0c;被SCI检索的论文&#xff0c;都会同时被EI检索。我们以论文《Learning Disentangled Representation for Multimodal Cross-Domain Sentiment Analysis》为例&#xff0c;讲解一下如何查询论文的各项信息。 我们首先百度这个论文 可以看到它是发表…

什么是企业数字化转型?数字化的价值体现在哪里?

从2015年接触平安的数字化转型&#xff0c;到2021年承接阿里云的服务数字化项目&#xff0c;再到2023年主导大大小小10来个数字化项目&#xff0c;8年的时间&#xff0c;数字化对我而言已经从一个“新词”变成了一个“旧词”。 8年过去&#xff0c;数字化也从一道企业的“选做…

轻松学会电脑如何录制音频

随手录音&#xff0c;保留证据以便后续出现问题进行判定&#xff0c;或者保存会议音频记录方便后续根据录音内容整理自己会议记录不足之处等等&#xff1b;越来越多的地方需要用到录音&#xff0c;那么在电脑上该如何进行音频录制呢&#xff1f;特别是使用比较广泛的Windows电脑…

基础算法【解题思路】:单链表的倒数第k个节点

定义指针p1&#xff0c;让p1走k步&#xff1a; 定义指针p2&#xff0c;在p1走了k步的时候&#xff0c;p2也跟着走。 p1走到最后的时候走了n-k步&#xff0c;停留在最后的null结点。 P2从头结点开始&#xff0c;也跟着走到了n-k步&#xff0c;而n-k恰好是倒数第k个节点。 例…