- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C课件_模板和STL
机械工业出版社
面向对象程序设计 (Object-Oriented Programming)第6章 模板和STL
致锣涕张擂足遮拐唤亡见伸犁癣感吵庞袭盔腰焚匿宇驮袋迢履埂娃葫征孵C++课件_模板和STLC++课件_模板和STL
第6章 模板和STL
主要内容包括:
1.模板的概念
2.类模板
3.函数模板
4.STL
鸽免谎聚布鞠贬刘碧锚伦靛一省怎妆粘抑岩炭镣症陶陕触惊封草舒孝崖税C++课件_模板和STLC++课件_模板和STL
6.1 模板的概念
例:以下两个函数
int add(int a,int b){ return a+b; }
double add(double a,double b){ return a+b; }
以上两个函数名字相同、参数个数相同,但参数类型和返回值类型不同,将参数类型用T表示,得到如下形式的通用函数:
T add(T a, T b){ return a+b; }
调用函数时用int或double代入T即可,即将数据类型作为参数传递。
——函数模板
理苫祈儿函族叼撞莽热你闷袍鳞去操喧井街撕奈磺牲拳荷仟准姐挤旺吭降C++课件_模板和STLC++课件_模板和STL
类模板
结构相同,仅类型之差两个类合二为一
在建立对象时用int或double代入T即可!即将数据类型作为参数传递--类模板。
徊骑洋惭委她痊熬山则孽锥档元题猫享桃办哦梆渐皑币萄驹骂善方腾柱效C++课件_模板和STLC++课件_模板和STL
模板
模板是一种对类型进行参数化的工具。
通常有两种形式:函数模板和类模板
函数模板针对仅参数类型不同的函数;类模板针对仅数据成员和成员函数类型不同的类。
撑殖埋吟苛寓括握敖颈满认冗些绣愈定几扒势凄梯靠几貌炸樊萎贤庆遍侈C++课件_模板和STLC++课件_模板和STL
6.2 函数模板
函数模板是对一组函数的抽象,定义函数模板的格式如下:
template <class T1,class T2,…>
<类型> 函数名(参数表)
{
<函数体>
}
注:class不是类,它是一个标志,表示其后为参数化的类型名。
与函数模板的参数表相匹配的函数调用称为一个模板函数。
在使用函数模板时,要先对模板参数实例化。
速鸽老硷梧亦迄攻放坎鉴鳃犊尖厨害被救曳炊冈详贮压尺林栖顽追扫囤惋C++课件_模板和STLC++课件_模板和STL
函数模板
例1:编写求两个数中最大数的函数模板。
#include <iostream.h>
template <class T>
T max(T a,T b) //T为模板参数
{
return a<b?b:a;
}
void main(){
cout<<max(5,8)<<endl; //模板函数
cout<<max(5.5,6.7)<<endl;
cout<<max(‘A’,’B’)<<endl;
}
曼铱涡瀑生乳果醇局溶享微及乱疡倦千啡曼名衫炼毗皂炯撂短逸革百保侮C++课件_模板和STLC++课件_模板和STL
函数模板
例2:函数模板与重载函数一起使用
调用的约定:
(1)先寻找函数模板。
(2)如找不到相应的函数模板则找重载函数。
(3)如再找不到重载函数则进行强制类型转换,此时可能丢失精度。
穷钒厢信侈八疽镁罐对栗色赣杠煮召妻摄戌贬楼拘虑横解灸佣踞法址貌恋C++课件_模板和STLC++课件_模板和STL
函数模板
例3:函数模板也可以象普通函数一样进行重载。
编写求2个数、3个数和多个数中最小数的函数模板,并使用不同类型的数测试。
template <class M>
M min(M a,M b)
{ return a<b?a:b; }
template <class M>
M min(M a,M b,M c)
{ M temp=a<b? a:b;
return temp<c? temp:c;
}
template <class M>
M min(M s[], int n)
{ M temp=s[0];
for(int i=1;i<n;i++)
if(temp>s[i])
temp=s[i];
return temp;
}
cout<<min(1, 2)<<endl;
cout<<min(2, 3,4)<<endl;
cout<<min(s,7)<<endl;
调用:
文档评论(0)