模板template

模板的概念

1.所谓模板是一种使用无类型参数来产生一系列函数或 类的机制。
2.若一个程序的功能是对某种特定的数据类型进行处 理,则可以将所处理的数据类型说明为参数,以便在 其他数据类型的情况下使用,这就是模板的由来。
3.模板是以一种完全通用的方法来设计函数或类而不必 预先说明将被使用的每个对象的类型。
4.通过模板可以产生类或函数的集合,使它们操作不同 的数据类型,从而避免需要为每一种数据类型产生一 个单独的类或函数
求大值模板函数实现
例:
1.求两个数大值,使用模板
template < class T >
T max(Ta , T b)
{
return ( a > b ) ? a : b;
}
2.template < 模板形参表> <返回值类型>
<函数名>(模板函数形参表)
{ //函数定义体 }

#include<iostream>
using namespace std;
template <class T>
T min(T a,T b)
{return (a>b) ? a:b;
}
int main(int argc, char* argv[])
{cout<<min(1,2)<<" "<<min('a','b')<<" "<<min(5.3,2.2)<<endl;return 0;

#include <iostream>
using namespace std;
template <class T>
T min(T a[],int n)
{int i;T minv=a[0];for( i = 1;i < n ; i++){if(minv>a[i])minv=a[i];}return minv;
}int main(int argc, char *argv[])
{int a[]={1,3,0,2,7,6,4,5,2};double b[]={1.2,-3.4,6.8,9,8};cout<<"a数组的最小值为:"<<min(a,9)<<endl;cout<<"b数组的最小值为:"<<min(b,4)<<endl;   system("PAUSE");    return 0;
}

模板工作方式

函数模板只是说明,不能直接执行,需要实例化 为模板函数后才能执行;
在说明了一个函数模板后,当编译系统发现有一 个对应的函数调用时,将根据实参中的类型来确 认是否匹配函数模板中对应的形参,然后生成一 个重载函数。该重载函数的定义体与函数模板的 函数定义体相同,它称之为模板函数

模板的优缺点

函数模板方法克服了C语言解决上述问题时用大 量不同函数名表示相似功能的坏习惯;克服了宏定义不能进行参数类型检查的弊端;克服了C++函数重载用相同函数名字重写几个函 数的繁琐。
缺点,调试比较困难。 一般先写一个特殊版本的函数; 运行正确后,改成模板函数

模板template基础学习相关推荐

  1. ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步

    http://blog.jobbole.com/85008/ ASP.Net MVC开发基础学习笔记(5):区域.模板页与WebAPI初步 2015/03/17 · IT技术 · .Net, Asp. ...

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

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

  3. Template 基础篇-函数模板

    ====================================================|| 欢迎讨论技术的可以相互加微信:windgs (请备注csdn+xx职业) ======== ...

  4. MongoDB+模板引擎 项目学习 ---学生档案管理

    MongoDB+模板引擎 项目学习 -学生档案管理 1 案例介绍 目标:模板引擎应用,强化node.js项目制作流程 知识点:http请求响应.数据库.模板引擎.静态资源访问 ​ 项目效果展示 2 制 ...

  5. angular基础学习

    angular基础学习 核心 一. angular环境搭建 1. 安装前准备: 1.1 安装nodejs 1.2 安装 cnpm, 尽量不要使用 1.3 使用npm/cnpm命令安装angular/c ...

  6. 零基础学习openstack【完整中级篇】及openstack资源汇总

    1.你是如何学习openstack的? 2.你对openstack的组件了解多少? 3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩 ...

  7. QT界面开发--基础学习篇一(上)

    一.Qt简单介绍: 1.QT的简单理解: Qt简单的说就是一种可以跨平台的编程语言工具,可以直接类比C语言和C++. 且一般QT的代码逻辑也是以C语言和C++(也可以适用于像JS的语言),可以直观理解 ...

  8. 虚幻引擎虚拟现实开发基础学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.93 GB |时长:5h 15m 了 ...

  9. C++中的模板template

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

  10. 计算机基础与应用(上)笔记总结,计算机基础学习心得体会范文(通用3篇)

    计算机基础学习心得体会范文(通用3篇) 当我们对人生或者事物有了新的思考时,好好地写一份心得体会,这样可以记录我们的思想活动.那么要如何写呢?以下是小编精心整理的计算机基础学习心得体会范文(通用3篇) ...

最新文章

  1. 盘点丨MIT教授Poggio:过去23年,机器学习取得了哪些进步
  2. 【Udacity】异常值检测/删除
  3. 5.3 Spring事物管理详解 我的程序猿之路:第四十二章
  4. 【055】长江水文数据自动记录程序
  5. UNITY statistic中的 SetPass和Batches
  6. RuntimeError: inconsistent AsyncHTTPClient cache
  7. java split 坑_java String split 踩坑记
  8. 面向数据科学家的实用统计学_数据科学家必知的统计数据
  9. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨游戏玩法分析 I【难度简单】
  10. mysql 统计当天,本周,本月,上一月的数据
  11. php 根据ip判断是否中国,PHP判断IP是中国IP还是外国IP
  12. 图书管理系统~~学生管理测试用例
  13. linux eclipse svn插件安装,Ubuntu16.04 Eclipse 安装 SVN 插件 subclipse 时 JavaHL 报错解决...
  14. FPS游戏(UE4,U3D引擎)方框绘制,骨骼透视,BT功能的原理 和反外挂策略
  15. gcc: error trying to exec ‘cc1plus‘: execvp: Permission denied
  16. 无创脑刺激对不同神经和神经精神疾病睡眠障碍的影响
  17. altium 旋转线段_几何画板旋转动画教程,这软件真牛!
  18. case when 的使用
  19. 导数——平均变化率与瞬时变化率
  20. 台湾大学郭彦甫MATLAB课程PPT课件

热门文章

  1. 洛谷3244 [HNOI2015]落忆枫音
  2. 在短视频源码开发中,移动端音视频加密、防盗播实现方案
  3. 通过搭建FTP站点实现上传与下载
  4. 9.进程间通信的方式有哪些?各自的优缺点及应用选择?
  5. 什么是Apache?Apache是什么意思?
  6. ES index not_analyzed
  7. 生成对抗网络理论模型和应用综述
  8. c语言代码姓名全拼,巧用拼音首字母输入人名(代码)
  9. ssm 订单功能实现
  10. 使用EXCEL4J读取EXCEL以及坑