模板与数据结构.ppt
《模板与数据结构.ppt》由会员分享,可在线阅读,更多相关《模板与数据结构.ppt(58页珍藏版)》请在优知文库上搜索。
1、第第6章章 模板与数据结构模板与数据结构模板的引入:模板的引入:6.1 模板模板增强代码的通用性,使之不受数据类型的限制。增强代码的通用性,使之不受数据类型的限制。模板的实现:模板的实现:将数据类型作为参数。将数据类型作为参数。模板模板(template)(template)函数模板函数模板(function )(function )类模板类模板(class )(class ) 功能:创建一个通用功能的函数,支持多种功能:创建一个通用功能的函数,支持多种不同形参,简化重载函数的函数体设计。不同形参,简化重载函数的函数体设计。6.1.1 函数模板及其应用函数模板及其应用函数模板定义函数模板定义:
2、templatetemplate 返回类型返回类型 函数名函数名( (形式参数表形式参数表) ) ; 例例. .找出三个数中的最大数,通过函数模板来实现。找出三个数中的最大数,通过函数模板来实现。#include #include using namespace std;using namespace std;templatetemplate T / /模板声明,其中模板声明,其中T T为类型参数为类型参数T T max( max(T T a, a,T T b, b,T T c) c) / /定义一个通用函数,用定义一个通用函数,用T T作虚拟的类型名作虚拟的类型名 if if(ba) a=b
3、;(ba) a=b; if if(ca) a=c;(ca) a=c; returnreturn a; a; intint main( ) main( ) int int i1=185, i2=-76, i3=567, i; i1=185, i2=-76, i3=567, i; double double d1=56.8, d2=90.2, d3=-314.7, d; d1=56.8, d2=90.2, d3=-314.7, d; longlong g1=6785, g2=-91245, g3=6734, g; g1=6785, g2=-91245, g3=6734, g; / /调用模板函数,
4、此时调用模板函数,此时T T被被intint取代,也可缺省取代,也可缺省 i=max i=max(i1,i2,i3); (i1,i2,i3); / /调用模板函数,此时调用模板函数,此时T T被被doubledouble取代取代 d=maxd=max(d1,d2,d3); (d1,d2,d3); / /调用模板函数,此时调用模板函数,此时T T被被longlong取代取代 g=maxg=max(g1,g2,g3); (g1,g2,g3); cout“i_max=“iendl; cout“i_max=“iendl; cout“f_max=“dendl; cout“f_max=“dendl; co
5、ut“g_max=“gendl; cout“g_max=“gy)?x:y; (xy)?x:y; intint min( ) min( ) returnreturn (xy)?x:y; (xy)?x:y; privateprivate: : intint x,y; x,y; ;6.1.2 类模板与线性表类模板与线性表若要比较两个浮若要比较两个浮点数大小呢?点数大小呢?类模板定义:类模板定义:templatetemplate classclass 类模板名类模板名 . . / /类体类体; ;类模板名类模板名 对象名对象名1 1,对象名,对象名n; n; / /可带参可带参数数templatete
6、mplate 返回类型返回类型 类模板名类模板名 :成员函数名成员函数名 ( (形参表形参表) ) / /成员函数体成员函数体 在类模板外定义成员函数,应采用以下形式:在类模板外定义成员函数,应采用以下形式:使用模板建立对象:使用模板建立对象: 用类模板实现:用类模板实现:templatetemplate / /虚拟类型虚拟类型numtypenumtypeclassclass Compare Compare / /类模板名为类模板名为CompareCompare publicpublic: : Compare( Compare(numtypenumtype a, a,numtypenumtyp
7、e b) b) x=a; y=b; x=a; y=b; numtypenumtype max( ) max( ) returnreturn (xy) ? x : y; (xy) ? x : y; numtypenumtype min( ) min( ) returnreturn (xy) ? x : y; (xy) ? x : y; privateprivate: : numtype numtype x,y; x,y; ;#include#include / /类模板应用举例类模板应用举例#include#include usingusing namespacenamespace std; s
8、td;classclass Student Student / /定义结构体类型定义结构体类型StudentStudent public: public:intint id; id; / /学号学号floatfloat gpa; gpa; / /平均分平均分 Student(Student(intint i=0, i=0,floatfloat g=0):id(i), gpa(g) g=0):id(i), gpa(g) ; ;templateclasstemplate / /类模板,实现对任意类型数据进行存取类模板,实现对任意类型数据进行存取classclass Store Store T T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模板 数据结构
