模板template
这个是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相关推荐
- C++中的模板template
1.Cpp中的模板template 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码.模板是创建泛型类或函数的蓝图或公式.库容器,比如迭代器和算法都是泛型编程的例子,它们都使用了 ...
- playbook核心元素之 模板template 介绍(7)
playbook核心元素之 --> 模板template 介绍 templates:文件文件,内部嵌套有模板语言脚本(使用模板语言编写) [root@ansible ~]# ansible-do ...
- python string模块template_Python - 定制pattern的string模板(template) 详解
定制pattern的string模板(template) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28625179 s ...
- vue 模板 html 表达式,Vue 模板template、指令directive、修饰符
模板 template template的三种写法 写法一:Vue完整版,写在HTML里 //html {{n}} +1 //vue new Vue({ el: '#xxx', data(){ ret ...
- C++:18---函数模板(template)
一.模板的定义 template<typename T> 以关键字template开头,后面跟一个模板参数列表,列表里面用逗号将多个模板参数隔开定义的注意事项 模板的编译 当编译器遇到一个 ...
- C++类模板template <class T>简单使用方法
一个简单的例子 两个数比大小 如果两个数都是int类型 class Compare_int { public :Compare(int a,int b){x=a;y=b;}int max( ){ret ...
- C++ 使用模板Template
template --声明创建模板I typename -- 表面其后面的符号是一种数据类型,可以用class代替 T --- 通用的数据类型,名称可以替换,通常为大写字母 使用模板之前: #incl ...
- 设计模式学习笔记——模板(Template)模式
设计模式学习笔记--模板(Template)模式 @(设计模式)[设计模式, 模板模式, template, 模板方法] 设计模式学习笔记模板Template模式 基本介绍 模板案例 类图 实现代码 ...
- Vue2 模板template的四种写法总结
下面小编就为大家分享一篇Vue2 模板template的四种写法总结,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. 如下所示: <div ...
- C++ 模板template
模板template 模板是对具有相同特性的函数或类的再抽象,模板是一种参数多态性的工具,可以为逻辑功能相同而类型不同的程序提供一种代码共享的机制. 一个模板并非一个实实在在的函数或类,仅仅是一个函数 ...
最新文章
- MySQL必知必会读书笔记
- pandas UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb1 in position 0: invalid start byte
- 用switch写收水费的c语言程序,超级新手,用switch写了个计算器程序,求指导
- Android面试题大集合
- Linux之vim全选,全部复制,全部删除
- Excel双样本T检验之成对检验
- 超全面的freemarker教程
- Pandas在数据分析中的应用
- 简述sicas计算机联锁的系统结构,《计算机联锁》教学大纲(5页)-原创力文档...
- puppet学习—默认WEBRick安装DashBoard
- 行为金融(八):羊群行为
- 抖音protobuf分析
- 扎根黄金赛道,尚未盈利的捍宇医疗如何遨游行业蓝海?
- 睡眠手环APP开发上线
- 生产环境实战spark (5)分布式集群 5台设备之间hosts文件配置 ssh免密码登录
- JAVA的jdk1.8中文文档
- 《漫画算法》读书笔记
- JavaScript--->内置对象自定义对象*笔记
- 【68期分享】7款红色大气PPT模板免费下载
- vue中DPlayer视频播放器使用方法