模板template基础学习
模板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基础学习相关推荐
- ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步
http://blog.jobbole.com/85008/ ASP.Net MVC开发基础学习笔记(5):区域.模板页与WebAPI初步 2015/03/17 · IT技术 · .Net, Asp. ...
- 设计模式学习笔记——模板(Template)模式
设计模式学习笔记--模板(Template)模式 @(设计模式)[设计模式, 模板模式, template, 模板方法] 设计模式学习笔记模板Template模式 基本介绍 模板案例 类图 实现代码 ...
- Template 基础篇-函数模板
====================================================|| 欢迎讨论技术的可以相互加微信:windgs (请备注csdn+xx职业) ======== ...
- MongoDB+模板引擎 项目学习 ---学生档案管理
MongoDB+模板引擎 项目学习 -学生档案管理 1 案例介绍 目标:模板引擎应用,强化node.js项目制作流程 知识点:http请求响应.数据库.模板引擎.静态资源访问 项目效果展示 2 制 ...
- angular基础学习
angular基础学习 核心 一. angular环境搭建 1. 安装前准备: 1.1 安装nodejs 1.2 安装 cnpm, 尽量不要使用 1.3 使用npm/cnpm命令安装angular/c ...
- 零基础学习openstack【完整中级篇】及openstack资源汇总
1.你是如何学习openstack的? 2.你对openstack的组件了解多少? 3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩 ...
- QT界面开发--基础学习篇一(上)
一.Qt简单介绍: 1.QT的简单理解: Qt简单的说就是一种可以跨平台的编程语言工具,可以直接类比C语言和C++. 且一般QT的代码逻辑也是以C语言和C++(也可以适用于像JS的语言),可以直观理解 ...
- 虚幻引擎虚拟现实开发基础学习教程
流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.93 GB |时长:5h 15m 了 ...
- C++中的模板template
1.Cpp中的模板template 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码.模板是创建泛型类或函数的蓝图或公式.库容器,比如迭代器和算法都是泛型编程的例子,它们都使用了 ...
- 计算机基础与应用(上)笔记总结,计算机基础学习心得体会范文(通用3篇)
计算机基础学习心得体会范文(通用3篇) 当我们对人生或者事物有了新的思考时,好好地写一份心得体会,这样可以记录我们的思想活动.那么要如何写呢?以下是小编精心整理的计算机基础学习心得体会范文(通用3篇) ...
最新文章
- 盘点丨MIT教授Poggio:过去23年,机器学习取得了哪些进步
- 【Udacity】异常值检测/删除
- 5.3 Spring事物管理详解 我的程序猿之路:第四十二章
- 【055】长江水文数据自动记录程序
- UNITY statistic中的 SetPass和Batches
- RuntimeError: inconsistent AsyncHTTPClient cache
- java split 坑_java String split 踩坑记
- 面向数据科学家的实用统计学_数据科学家必知的统计数据
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨游戏玩法分析 I【难度简单】
- mysql 统计当天,本周,本月,上一月的数据
- php 根据ip判断是否中国,PHP判断IP是中国IP还是外国IP
- 图书管理系统~~学生管理测试用例
- linux eclipse svn插件安装,Ubuntu16.04 Eclipse 安装 SVN 插件 subclipse 时 JavaHL 报错解决...
- FPS游戏(UE4,U3D引擎)方框绘制,骨骼透视,BT功能的原理 和反外挂策略
- gcc: error trying to exec ‘cc1plus‘: execvp: Permission denied
- 无创脑刺激对不同神经和神经精神疾病睡眠障碍的影响
- altium 旋转线段_几何画板旋转动画教程,这软件真牛!
- case when 的使用
- 导数——平均变化率与瞬时变化率
- 台湾大学郭彦甫MATLAB课程PPT课件