实验09群体类与群体数据的组织资料

谭毓银《程序设计》课内实验C++2014数学与应用数学曾悦034166学时)09群体类与群体数据的组织(4实验群体类与群体数据的组织)9章(第一、实验目的掌握函数模板与类模板。(1)(2)了解线性群体与群体数据的组织。二、实验任务9_1求绝对值的函数模板及其应用#include<iostream>usingnamespacestd;template<typenameT>Tfun(Tx){returnx<0?-x:x;}intmain(){intn=-5;doubled=-5.5;cout<<fun(n)<<endl;cout<<fun(d)<<endl;return0;}19_2函数模板的示例。#include<iostream>usingnamespacestd;//定义函数模板template<classT>voidoutputArray(constT*array,intcount){for(inti=0;i<count;i++)cout<<array[i]<<;cout<<endl;}intmain(){//主函数constintA_COUNT=8,B_COUNT=8,C_COUNT=20;int数组inta[A_COUNT]={1,2,3,4,5,6,7,8};//定义数组doubleb[B_COUNT]={1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8};//定义doublechar//定义数组charc[C_COUNT]=Welcometoseeyou!;cout<<aarraycontains:<<endl;调用函数模板//outputArray(a,A_COUNT);cout<<barraycontains:<<endl;outputArray(b,B_COUNT);//调用函数模板cout<<carraycontains:<<endl;//调用函数模板outputArray(c,C_COUNT);return0;}29_3类模板应用举例。#include<iostream>#include<cstdlib>usingnamespacestd;//结构体StudentstructStudent{intid;//学号floatgpa;//平均分};template<classT>classStore{//类模板:实现对任意类型数据进行存取private:Titem;//item用于存放任意类型的数据boolhaveValue;//haveValue标记item是否已被存入内容public:Store();//缺省形式(无形参)的构造函数TgetElem();//提取数据函数voidputElem(constTx);//存入数据函数};//以下实现各成员函数。template<classT>//缺省构造函数的实现Store<T>::Store():haveValue(false){}template<classT>//提取数据函数的实现TStore<T>::getElem(){//如试图提取未初始化的数据,则终止程序if(!haveValue){cout<<Noitempresent!<<endl;exit(1);//使程序完全退出,返回到操作系统。}itemreturnitem;//返回中存放的数据}template<classT>//存入数据函数的实现voidStore<T>::putElem(constTx){中已存入数值,表示置为将haveValue=true;//haveValuetrueitemitem将x值存入//item=x;}intmain(){Store<int>s1,s2;s1.putElem(3);s2.putElem(-7);cout<<s1.getElem()<<<<s2.getElem()<<endl;3Studentg={1000,23};Store<Student>s3;s3.putElem(g);cout<<Thestudentidis<<s3.getElem().id<<endl;Store<double>d;cout<<RetrievingobjectD...;cout<<d.getElem()<<endl;过程中导致程序终在执行函D.getElement(未经初始/由return0;}9_4动态数据类模板示//Array.h#ifndefARRAY_H#defineARRAY_H#include<cassert>//数组类模板定义template<classT>classArray{private:类型指针,用于存放动态分配的数组内存首地址T*list;//T数组大小(元素个数)intsize;//public:构造函数Array(intsz=50);//Array(constArray<T>a);//拷贝构造函数~Array();//析构函数使数组对象可以整体赋重载Array<T>operator=(constArray<T>rhs);//?值C++Array孜屝//Toperator[](inti);重载,使对象可以起到普通数组的作用版本运算符的??孜屝constconstToperator[](inti)const;普通数组类型的转换,使T*重载到operatorT*();//C++Array对象可以起到的作用4版本类型转换操作符的constoperatorconstT*()const;//到T*取数组的大小intgetSize()const;//修改数组的大小voidresize(intsz);//};构造函数//template<classT>Array<T>::Array(intsz){,应当非负//sz为数组大小(元素个数)assert(sz>=0);size将元素个数赋值给变量size=sz;//类型的元素空间个Tlist=newT[size];//动态分配size}析构函数//template<classT>Array<T>::~Array(){delete[]list;}拷贝构造函数//template<classT>Array<T>::Array(constArray<T>a){x取得数组大小,并赋值给当前对象的成员//从对象size=a.size;//为对象申请内存并进行出错检查nlist=newT[size];//动态分配个T类型的元素空间复制数组元素到本对象从对象X//for(inti=0;i<size;i++)list[i]=a.list[i];}rhs...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?