这个是C++中的模板..template<typename T> 这个是定义模板的固定格式

模板应该可以理解到它的意思吧.. 比如你想求2个int float 或double型变量的值,只需要定义这么一个函数就可以了,假如不用模板的话,你就必须针对每种类型都定义一个sum函数..int sum(int, int);float sum(float, float);double sum(double, double);

因为T是一个模版实例化时才知道的类型,所以编译器更对T不知所云,为了通知编译器T是一个合法的类型,使用typename语句可以避免编译器报错。 ​​​​​
template < typename var_name > class class_name; 表示var_name是一个类型, 在模版实例化时可以替换任意类型,不仅包括内置类型(int等),也包括自定义类型class。 换句话说,在template<typename Y>和template<class Y>中,typename和class的意义完全一样。 建议在这种语句中尽可能采用typename,以避免错觉(因为只能替换class,不能只换int), 这也是C++新标准引进typename关键词的一个初衷按 C++ 标准来说,template<typename T> 用于基础数据类型,typename 指类型名,T 可以取 char int double 等。
template<class T> 用于类,T 可以取任何类。
但是这里有一个问题,结构体应该用 typename 还是 class? 结构体肯定不是基础数据类型,但也不是类。
所以实际情况是,template<class T> 的 T 也可以取基础数据类型,tempate<typename T> 的 T 也可以取类。但有一个特例,就是当 T 是一个类,而这个类又有子类(假设名为 innerClass) 时,应该用 template<typename>:
typename T::innerClass myInnerObject;
这里的 typename 告诉编译器,T::innerClass 是一个类,程序要声明一个 T::innerClass 类的对象,而不是声明 T 的静态成员,而 typename 如果换成 class 则语法错误。

template <typename T>

写了个程序试了一下,其实就是这个东西可以根据你所需要的类型就行匹配。其实就是模板

比如求最小值,要int,double,char,那么你就 要写三个函数

1 int sum(int, int);
2
3 float sum(float, float);
4
5 double sum(double, double);
6
7  

但是有了templae<typename T>你就只需要写一个函数。

详见代码:

1 #include<iostream>2 #include<vector>3 #include<algorithm>4 using namespace std;5 template <typename T>6 T mmax(T a,T b)7 {8     return a>b?a:b;9 }
10 int main()
11 {
12     int  a,b;
13     cin>>a>>b;
14     cout<<mmax(a,b)<<endl;
15     char c,d;
16     cin>>c>>d;
17     cout<<mmax(c,d)<<endl;
18     double f,g;
19     cin>>f>>g;
20     cout<<mmax(f,g)<<endl;
21 }

模板template相关推荐

  1. C++中的模板template

    1.Cpp中的模板template 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码.模板是创建泛型类或函数的蓝图或公式.库容器,比如迭代器和算法都是泛型编程的例子,它们都使用了 ...

  2. playbook核心元素之 模板template 介绍(7)

    playbook核心元素之 --> 模板template 介绍 templates:文件文件,内部嵌套有模板语言脚本(使用模板语言编写) [root@ansible ~]# ansible-do ...

  3. python string模块template_Python - 定制pattern的string模板(template) 详解

    定制pattern的string模板(template) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28625179 s ...

  4. vue 模板 html 表达式,Vue 模板template、指令directive、修饰符

    模板 template template的三种写法 写法一:Vue完整版,写在HTML里 //html {{n}} +1 //vue new Vue({ el: '#xxx', data(){ ret ...

  5. C++:18---函数模板(template)

    一.模板的定义 template<typename T> 以关键字template开头,后面跟一个模板参数列表,列表里面用逗号将多个模板参数隔开定义的注意事项 模板的编译 当编译器遇到一个 ...

  6. C++类模板template <class T>简单使用方法

    一个简单的例子 两个数比大小 如果两个数都是int类型 class Compare_int { public :Compare(int a,int b){x=a;y=b;}int max( ){ret ...

  7. C++ 使用模板Template

    template --声明创建模板I typename -- 表面其后面的符号是一种数据类型,可以用class代替 T --- 通用的数据类型,名称可以替换,通常为大写字母 使用模板之前: #incl ...

  8. 设计模式学习笔记——模板(Template)模式

    设计模式学习笔记--模板(Template)模式 @(设计模式)[设计模式, 模板模式, template, 模板方法] 设计模式学习笔记模板Template模式 基本介绍 模板案例 类图 实现代码 ...

  9. Vue2 模板template的四种写法总结

    下面小编就为大家分享一篇Vue2 模板template的四种写法总结,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. 如下所示: <div ...

  10. C++ 模板template

    模板template 模板是对具有相同特性的函数或类的再抽象,模板是一种参数多态性的工具,可以为逻辑功能相同而类型不同的程序提供一种代码共享的机制. 一个模板并非一个实实在在的函数或类,仅仅是一个函数 ...

最新文章

  1. MySQL必知必会读书笔记
  2. pandas UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb1 in position 0: invalid start byte
  3. 用switch写收水费的c语言程序,超级新手,用switch写了个计算器程序,求指导
  4. Android面试题大集合
  5. Linux之vim全选,全部复制,全部删除
  6. Excel双样本T检验之成对检验
  7. 超全面的freemarker教程
  8. Pandas在数据分析中的应用
  9. 简述sicas计算机联锁的系统结构,《计算机联锁》教学大纲(5页)-原创力文档...
  10. puppet学习—默认WEBRick安装DashBoard
  11. 行为金融(八):羊群行为
  12. 抖音protobuf分析
  13. 扎根黄金赛道,尚未盈利的捍宇医疗如何遨游行业蓝海?
  14. 睡眠手环APP开发上线
  15. 生产环境实战spark (5)分布式集群 5台设备之间hosts文件配置 ssh免密码登录
  16. JAVA的jdk1.8中文文档
  17. 《漫画算法》读书笔记
  18. JavaScript--->内置对象自定义对象*笔记
  19. 【68期分享】7款红色大气PPT模板免费下载
  20. vue中DPlayer视频播放器使用方法

热门文章

  1. 安全断路器市场现状及未来发展趋势分析
  2. Tableau各版本更新情况
  3. HBase2.x(一)HBase简介
  4. 在mysql数据库中如何导出数据库_MYSQL导出数据库的一些方法
  5. Windows10安装开源Mujoco
  6. sublime build 系统必读
  7. ON/安森美FCH041N65F车规级MOS管,原厂渠道ASEMI代理
  8. 深入浅出Pytorch函数——torch.zeros_like
  9. linux配置网卡、修改主机名和映射文件(手把手配置)
  10. 计算机语言的文体特点,网络语言文体特征