我在读TensorRT关于C++ API部分的源码时,经常会遇到类似template<tyname T>的代码 。
之前总是不明白,现在要读懂源码,就必须弄懂这一行代码的用法以及含义 。
模板的定义
template,从字面意思角度而言,就是模板的意思,当然,在C++当中,也是起到模板的作用,模板的意思一般我们认为是通用格式或者固定格式,同时,它也是泛型编程的基础,泛型编程指的是用一种独立于任何特定类型的方式来编写代码 。
template主要有两种,分别是函数模板和类模板,当然,我今天讲这两种模板,只会提到较为简单的概念,不会讲得特别难,就拿最简单的数与数相加为例,来与大家仔细唠唠模板的概念,帮助大家简单理解 。
文章插图
函数模板
首先我们来看一看函数模板,该模板中的函数名,就是我们自己定义的,T指的就是具体的数据类型,当然,这里的T可以用任何数据类型来代替 。
//template函数模板#include<iostream>usingnamespacestd; template<typenameT> inlineT calculate(T a, T b){ returna + b; } intmain(){ inti = 10; intj = 20; cout<< "calculate(i,j): "<< calculate(i,j)<<endl; floatq = 10; floatw = 50; cout<< "calculate(i,j): "<< calculate(q, w) << endl; }
文章插图
可以发现,该函数模板体现了通用性,让两个相同数据类型的数据都能调用定义的函数,大大提升了程序运行的效率,而原本我们写函数时,都要明确数据的具体类型,否则就无法调用该函数,由此可见,模板概念的出现,对程序编写能起到很大的帮助 。
类模板
其次我们来看一看类模板,类模板,顾名思义就是定义一个通用的类,其中所包含的函数、变量都是能直接调用的 。
//template类模板#include<iostream>usingnamespacestd; template<typenameT> classrun{public: T calculate(T a, T b){ returna + b; } }; intmain(){ run<int> test; inti = 10; intj = 20; cout<< "calculate(i,j): "<< test.calculate(i,j)<<endl; run<float> test1; floatq = 10; floatw = 50; cout<< "calculate(q,w): "<< test1.calculate(q, w) << endl; run<double> test2; doublee = 20; doublet = 30; cout<< "calculate(e,t): "<< test2.calculate(e, t) << endl; }
文章插图
可以发现,类模板与函数模板的差别主要在于调用的过程,其它都是类似的 。
总结
【一分钟搞懂template模板定义 template是什么意思啊】 可以发现,使用函数模板和类模板能够提升程序运行的效率,直接读程序源码很难读懂,以一个简单例子来看,就更好理解一些,所以我选择最简单的数相加来举例,可以帮助大家更好地理解模板的含义 。
推荐阅读
- 狗狗一分钟呼吸多少次
- 一分钟教你无损解锁方法 密码箱忘记密码怎么开锁
- 一分钟快速开发自己的手机app 如何自己开发软件app
- 白描是什么?古代“白画”怎么发展成了白描,一分钟带你了解白描
- 600秒等于几分钟
- 一篇文章教你搞懂10种电商模式 电商的运营模式有几种类型
- 一分钟多少帧,2小时4k视频.多少容量
- 一分钟开通认证支付
- 一分钟教你把门禁卡写入手机 华为门禁卡怎么添加到手机NFC
- qq问题忘了怎么办 一分钟解决问题