您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C++实验六函数模板,类模板和标准模板库
福建工程学院实验报告面向对象程序设计(C++)专业电子信息工程班级1303座号姓名日期2015-12-01实验六函数模板,类模板和标准模板库一、实验目的:掌握函数模板、类模板的格式、语法及应用。掌握标准模板库的应用。二、实验时间:2015-12-01三、实验地点:C2-101四、实验内容:1.编写函数模板:编写一求两个数的最大值的函数Max(),要求用模板实现对任意数据类型数据都可应用该函数求取结果,在main()函数中分别用整型、实型、字符型数据进行测试。#includeiostreamusingnamespacestd;templatetypenameTTMax(Tx,Ty){returnxy?x:y;}intmain(){intx1=10,x2=20;doubled1=15.123,d2=19.0321;charc1='a',c2='y';coutMax(10,20):Max(x1,x2)endl;coutMax(15.123,19.0321):Max(d1,d2)endl;coutMax('a','y'):Max(c1,c2)endl;return0;}2.编写一冒泡排序的函数模板:函数的定义为:templatetypenameElementTypevoidSortBubble(ElementType*a,intsize),完成该函数并在main()中调用。#includeiostreamusingnamespacestd;templatetypenameElementTypevoidSortBubble(ElementType*a,intsize){inti,work;ElementTypetemp;for(intpass=1;passsize;pass++){work=1;for(i=0;isize-pass;i++)if(a[i]a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;work=0;}if(work)break;}}intmain(){intarr[5]={3,12,2,10,0};SortBubble(arr,5);coutarr[0]arr[1]arr[2]arr[3]arr[4]endl;doubledArr[4]={1.20,5.62,3.012,8.101};SortBubble(dArr,4);coutdArr[0]dArr[1]dArr[2]dArr[3]endl;charcArr[3]={'s','d','w'};SortBubble(cArr,3);coutcArr[0]cArr[1]cArr[2]endl;return0;}3.类模板操作:有以下类模板templateclassT//类模板:实现对任意类型数据进行存取classStore{private:Titem;//用于存放任意类型的数据inthaveValue;//用于标记item是否已被存入内容public:Store(void);//默认形式(无形参)的构造函数TGetElem(void);//提取数据函数voidPutElem(Tx);//存入数据函数};请实现并测试该类。#includeiostream#includestringusingnamespacestd;structPeople{stringname;intage;};classDog{public:stringname;public:Dog(){}Dog(stringn):name(n){}voidwang(){coutWangWang。。。;}};templateclassTclassStore{private:Titem;inthaveValue;public:Store(void);TGetElem(void);voidPutElem(Tx);};templateclassTStoreT::Store(void):haveValue(0){}templateclassTvoidStoreT::PutElem(Tx){haveValue=1;item=x;}templateclassTTStoreT::GetElem(void){if(haveValue==0){coutNoitempresent!endl;exit(1);}returnitem;}intmain(){//int类型Storeinti1,i2;i1.PutElem(5);i2.PutElem(999);couti1.GetElem()i2.GetElem()endl;//People类型Peoplep={Tom,20};StorePeopleps;ps.PutElem(p);coutNameis:ps.GetElem().nameageis:ps.GetElem().ageendl;//Dog类型Dogd(snoopy);StoreDogds;ds.PutElem(d);coutDog'snameis:ds.GetElem().nameendl;//double类型Storedoubled1,d2;d1.PutElem(3.14159);coutd1.GetElem()endl;coutd2.GetElem()endl;return0;}4.应用标准模板库的容器进行编程:类A的定义如下,对进行重载,请补全该类,并在main()中测试对容器对象的应用程序:includevector#includeiostreamclassA{private:intn;public:friendbooloperator(constA&,constA&);A(intn_){n=n_;}};五、实验要求:在上机前写出全部源程序;六、实验结果分析:1,模板函数:2,冒泡排序:3,对模板类进行不同数据类型的测试,结果如下:七、实验心得体会及问题反馈:1、对模板函数,模板类加深理解并掌握使用方法。2、加深了C++泛型编程的理解,编写的程序更加通用。教师评定:签字:年月日
本文标题:C++实验六函数模板,类模板和标准模板库
链接地址:https://www.777doc.com/doc-2901643 .html