网站大量收购独家精品文档,联系QQ:2885784924

第9章群体类和群体数据的组织总汇.ppt

  1. 1、本文档共100页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 群体类和群体数据的组织;目录;9.1.1 函数模板;*;求绝对值函数的模板分析;例9-1函数模板的示例;例9-1(续);例9-1(续);9.1.2 类模板;类模板的声明;例9-2 类模板示例;*;*;线性群体;群体的概念;9.2.1 线性群体的概念;9.2.2 直接访问群体——数组类;*;template class T ArrayT::Array(int sz) {//构造函数 assert(sz = 0);//sz为数组大小(元素个数),应当非负 size = sz; // 将元素个数赋值给变量size list = new T [size]; //动态分配size个T类型的元素空间 } template class T ArrayT::~Array() { //析构函数 delete [] list; } //拷贝构造函数 template class T ArrayT::Array(const ArrayT a) { size = a.size; //从对象x取得数组大小,并赋值给当前对象的成员 //为对象申请内存并进行出错检查 list = new T[size]; // 动态分配n个T类型的元素空间 for (int i = 0; i size; i++) //从对象X复制数组元素到本对象 list[i] = a.list[i]; } ;//重载=运算符,将对象rhs赋值给本对象。实现对象之间的整体赋值 template class T ArrayT ArrayT::operator = (const ArrayT rhs) { if (rhs != this) { //如果本对象中数组大小与rhs不同,则删除数组原有内存,然后重新分配 if (size != rhs.size) { delete [] list; //删除数组原有内存 size = rhs.size; //设置本对象的数组大小 list = new T[size]; //重新分配n个元素的内存 } //从对象X复制数组元素到本对象 for (int i = 0; i size; i++) list[i] = rhs.list[i]; } return *this; //返回当前对象的引用 };//重载下标运算符,实现与普通数组一样通过下标访问元素,并且具有越界检查功能 template class T T ArrayT::operator[] (int n) { assert(n = 0 n size); //检查下标是否越界 return list[n]; //返回下标为n的数组元素 } template class T const T ArrayT::operator[] (int n) const { assert(n = 0 n size); //检查下标是否越界 return list[n]; //返回下标为n的数组元素 }? //重载指针转换运算符,将Array类的对象名转换为T类型的指??? template class T ArrayT::operator T * () { return list; //返回当前对象中私有数组的首地址 } ?;template class T ArrayT::operator const T * () const { return list; //返回当前对象中私有数组的首地址 } //取当前数组的大小 template class T int ArrayT::getSize() const { return size; } // 将数组大小修改为sz template class T void ArrayT::resize(int sz) { assert(sz = 0); //检查sz是否非负 if (sz == size) //如果指定的大小与原有大小一样,什么也不做 return; T* newList = new T [sz]; //申请新的数组内存 int n = (sz size) ? sz : size;//将sz与size中较小的一个赋值给n //将原有数组中前n个元素复制到新数组中 for (int i = 0; i n; i++) newList[i] = list[i]; delete[] list; //删除原数组 list = newList; // 使list指向新数组 size = sz; //更新size } #endif //ARRAY_H ?;*;为什么有的函数返回引用;指针转换运算符的作用;Array类的应用;*

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档