第十章类模板课后编程题目答案教学提纲.docx
- 文档编号:690608
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:24
- 大小:18.17KB
第十章类模板课后编程题目答案教学提纲.docx
《第十章类模板课后编程题目答案教学提纲.docx》由会员分享,可在线阅读,更多相关《第十章类模板课后编程题目答案教学提纲.docx(24页珍藏版)》请在冰豆网上搜索。
第十章类模板课后编程题目答案教学提纲
第十章类模板课后编程题目答案
1。
设计一个类模板,其中包含数据成员Ta[n]以及对其进行排序的成员函数Sort(),
模板参数T可实例化成字符串。
解;如果T仅仅可以实例化成基本数据类型与char*类型的字符串,可通过重载sort()
实现,程序如下:
#include
#include
template
classArray
{
private:
Ta[n];
public:
voidsort(double)
{
for(inti=0;i for(intj=i+1;j if(a[i]>a[j]) { Tt; t=a[i]; a[i]=a[j]; a[j]=t; } } voidsort(char*) { for(inti=0;i for(intj=i+1;j if(a[j]==NULL||(a[i]! =NULL&&strcmp(a[i],a[j])>0)) { Tt; t=a[i]; a[i]=a[j]; a[j]=t; } } voiddisp() { for(inti=0;i if(a[i]! =NULL) cout< else cout<<",\t"; if(a[i]! =NULL) cout< else cout< } Array(Ta[]) { for(inti=0;i this->a[i]=a[i]; } }; voidmain() { floatf[]={1.2,2.3,7.7,4,3,4,2.3}; Array a1.sort(f[0]); a1.disp(); char*a[6]={"a","abc","ABC","abcd"}; Array a2.sort(a[0]); a2.disp(); charc[]={'a','b','C','2'}; Array a3.sort(c[0]); a3.disp(); } 如果T的类型可以实例化成自定义的字符串类String类型,需要重载赋值运算符=,插入运算符<<,比较运算符>,分别用于进行字符串赋值,输出,比较。 程序如下: #include #include usingnamespacestd; classString { private: char*Str; intlen; public: String(intn=0) { Str=NULL; len=n; } String(constchar*p) { len=strlen(p); Str=NULL; if(len! =0) { Str=newchar[len+1]; strcpy(Str,p); } } String(String&r) { len=r.len; if(len>0) { Str=newchar[len+1]; strcpy(Str,r.Str); } } ~String() { if(len>0) delete[]Str; } String&operator=(constString&r) { if(len>0) delete[]Str; Str=NULL; len=r.len; if(len>0) { Str=newchar[len+1]; strcpy(Str,r.Str); } return*this; } booloperator>(constString&r) { if(Str==NULL) returnfalse; if(Str! =NULL&&r.Str==NULL) returntrue; intn=(len>r.len? len: r.len); for(inti=0;i { if(Str[i] returnfalse; if(Str[i]>r.Str[i]) returntrue; } returnfalse; } friendostream&operator<<(ostream&output,constString&s) { if(s.Str! =NULL) output< returnoutput; } }; template classArray { private: Ta[n]; public: voidsort() { for(inti=0;i for(intj=i+1;j if(a[i]>a[j]) { Tt; t=a[i]; a[i]=a[j]; a[j]=t; } } voiddisp() { for(inti=0;i cout< cout< } Array(Ta[]) { for(inti=0;i this->a[i]=a[i]; } }; voidmain() { floatf[]={1.2,2.3,7.7,4,3,4,2.3}; Array a1.sort(); a1.disp(); Stringa[6]={"a","abc","ABC","abcd"}; Array a2.sort(); a2.disp(); } 2.设计一个类模板,其中包括数据成员Ta[n]以及在其中进行查找数据元素的函数intsearch(T)模板参数T可实例化成字符串。 #include #include usingnamespacestd; classString { private: char*Str; intlen; public: String(intn=0) { Str=NULL; len=n; } String(constchar*p) { len=strlen(p); Str=NULL; if(len! =0) { Str=newchar[len+1]; strcpy(Str,p); } } String(String&r) { len=r.len; if(len>0) { Str=newchar[len+1]; strcpy(Str,r.Str); } } ~String() { if(len>0) delete[]Str; } String&operator=(constString&r) { if(len>0) delete[]Str; Str=NULL; len=r.len; if(len>0) { Str=newchar[len+1]; strcpy(Str,r.Str); } return*this; } booloperator==(constString&r) { if(len! =r.len) returnfalse; if(len==0) returntrue; for(inti=0;i if(Str[i]! =r.Str[i]) returnfalse; returntrue; } friendostream&operator<<(ostream&output,constString&s) { if(s.Str! =NULL) output< returnoutput; } }; template classArray { private: Ta[n]; public: intsearch(Tkey) { for(inti=0;i if(a[i]==key) returni; return-1; } voiddisp() {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 模板 课后 编程 题目 答案 教学 提纲