初话C++模板【用自己的话,解释清楚这些】
用自己的话解释清楚C++的模板编程
模板编程是为了解决什么问题而出现的?
提高代码的重用性,提高代码的利用率。
泛型编程的一种实现。
模板的精神是:
类型参数化。
模板的实现
模板分为:函数模板、类模板
函数模板
定义函数模板的一般形式为:
template < typename T>
通用函数定义 通用函数定义
或
template <class T>
通用函数定义 通用函数定义
对于多个类型可采用如下:template <class T1, typename T2>
参考使用代码如下:
1 #include <iostream>
2
3 using namespace std;
4 template <typename T> //模板声明,其中T为类型参数
5 inline T max(T a,T b,T c) //定义一个通用函数,用T作虚拟的类型名
6 {
7 if(b>a) a=b;
8 if(c>a) a=c;
9 return a;
10 }
11
12
13 int main()
14 {
15 int i1=18,i2=19,i3=20;
16 int i;
17
18 double d1=1.23,d2=2.34,d3=3.56;
19 double d;
20
21
22 i=max(i1,i2,i3);
23 d=max(d1,d2,d3);
24 cout<<"i_max="<<i<<endl;
25 cout<<"d_max="<<d<<endl;
26 return 0;
27 }
28
类模板
类模板的定义也与函数模板类似:
参考代码如下:
1 #include <iostream>
2
3 using namespace std;
4 template <typename T>
5
6 class Compare
7 {
8 public:
9 Compare(T a,T b)
10 {
11 x=a;
12 y=b;
13 }
14 T max()
15 {
16 return (x>y)?x:y;
17 }
18
19 private:
20 T x,y;
21 };
22
23
24
25 int main()
26 {
27 Compare<int> c(3,7);
28
29
30 cout<<c.max()<<" is the max of two num"<<endl;
31 return 0;
32 }
33
参考工程下载,http://pan.baidu.com/s/1mgKBUoK
http://pan.baidu.com/s/1pJO96Q3
http://pan.baidu.com/s/1kT0vioJ
QQ群 计算机科学与艺术 272583193
加群链接:http://jq.qq.com/?_wv=1027&k=Q9OxMv
初话C++模板【用自己的话,解释清楚这些】的更多相关文章
- C++ Templates (1.1 初窥函数模板 A First Look at Function Templates)
返回完整目录 目录 1.1 初窥函数模板 A First Look at Function Templates 1.1.1 定义模板 Defining the Template 1.1.2 使用模板 ...
- 51nod 1009 - 数字1的数量 - [数位DP][模板的应用以及解释]
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1009 基准时间限制:1 秒 空间限制:131072 KB 给 ...
- c++学习之初话 函数指针和函数对象 的因缘
函数指针可以方便我们调用函数,但采用函数对象,更能体现c++面向对象的程序特性. 函数对象的本质:()运算符的重载.我们通过一段代码来感受函数指针和函数对象的使用: int AddFunc(int a ...
- C++入门之初话多态与虚函数
多态性是面向对象程序设计的又一个重要思想,关于多态的详尽描述,请看本人的收藏https://www.cnblogs.com/hust-ghtao/p/3512461.html.这篇博文中,详尽的探讨了 ...
- c++入门之初话指针
先上代码:再进行总结知识: # include "iostream" struct ant_year_end { int year; }; int main() { using n ...
- c++入门之初话结构体
结构体是一种具有一定数据结构思想的数据类型,我们在对待结构体的时候,用该从数据结构的思想去审视结构体.下面给出结构体的定义 struct mystruct {]; int score; double ...
- JavaScript模板引擎实现数据交互
经过1年的磨练,近期终于稍微明白到,前端是怎么做到企业要求的:数据交互. 1,ajax+json这个是必须学的,但没问题,我们可以通过这个博客来慢慢了解怎么回事? 2,可以通过JS框架和JS模板来实现 ...
- 微信小程序模板发送,openid获取,以及api.weixin.qq.com不在合法域名内解决方法
主要内容在标题三,老手可直接跳到标题三. 本文主要解决个人开发者模板消息发送的问题(没有服务器,不能操作服务器的情况) 针对api.weinxin.qq.com不在以下合法域名列表内的问题提出的解决方 ...
- Django笔记 —— 模板
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
随机推荐
- appcompat_v7/res/values-v21/themes_base.xml No resource found that matches the given name
今天晕死了 将工作区里的appcompat_v7删除掉了, 然后随意新建了一个工程,因为已经升级到5.0了,appcompat_v7内容有所改变, 以前的工程引用旧的appcompat_v7的某些属性 ...
- Android开发学习之 定制界面风格
统一的用户界面是可以使得应用程序更友好.要做到用户界面的统一,我们就必须用到风格(style)和主题(theme).OPhone系统提供了很多系统默认的风格和主题,但是很多情况下,这些不能满足我们的需 ...
- SAP BW中的增强(转)
根据所了解的资料,BW中的有关增强可分为五部分,如下: 1. 数据抽取增强,即在标准数据源中加入数据源中所不存在的字段,或者标准数据源不存在所需数据而需要自定义数据源,相关的事务代码有RSO2(用于 ...
- xtrabackup原理1
http://www.cnblogs.com/Amaranthus/archive/2014/08/19/3922570.html Percona XtraBackup User Manual 阅读笔 ...
- SVN Cleanup failed的解决办法
一开始没有更新执行了提交操作,提示有冲突 再执行更新操作的时候出现了“之前操作未完成,如果该操作被中断了执行cleanup命令”的提示
- Vesions ignore & ld: library not found for -l...
1.递归删除指定目录下的 .git..svn 文件 find . -name .git | xargs rm -fr find . -name .svn | xargs rm -rf 第一条倒还不常用 ...
- 构建高效安全的Nginx Web服务器
一 为什么选择Nginx搭建Web服务器 Apache和Nginx是目前使用最火的两种Web服务器,Apache出现比Nginx早.Apache HTTP Server(简称Apache)是世界使用排 ...
- Code the Tree
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2292 Accepted: 878 Description A tree ...
- (重刷)HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,dijkstra解法。
floyd解法 今天初看dijkstra,先拿这两题练手,其他变形题还是不是很懂. 模版题,纯练打字... HDU 1874: #include <cstdio> #define MAXN ...
- sql 自定义函数--固定格式字符转时间类型
遇到一个德国的客户,他们的时间格式是JJJJ-TT-DD HH:MM:SS,程序按照这个格式将时间插入数据库,但是在sql自带的转换函数convert.cast过程中报错,网上搜了下都说用conver ...