-数组类模板
来源:互联网 发布:360云盘数据没有了 编辑:程序博客网 时间:2024/04/30 02:59
/* Copyright (c) 2016* All rights reserved 烟台大学计算机与控制工程学院* 文件名称:3.cpp* 作者:刘丽* 完成日期:2016年 6 月 15日* 版本号: v1.0【项目-数组类模板】 在数组类的基础上,将之改造为类模板,以使数组中可以存储各种类型的数据。template <class T> //数组类模板定义class Array{private: T* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数)...};*/#include<iostream>#include<cassert>using namespace std;template <class T> //数组类模板定义class Array{private: T* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数)public: Array(){}; Array(int sz); Array(const Array<T> &t); ~Array(); void rsize(int sz); void display(); T &operator [](int ); Array<T> &operator = (const Array<T>& rhs);};template <class T>Array<T>::Array(int sz){ assert(sz>=0); size=sz; list=new T [size];for(int i=0;i<size;i++)list[i]=i;}template <class T> Array<T>::Array(const Array<T> &t){ T* l; l=new T [t.size]; for(int i=0;i<t.size;i++) l[i]=t.list[i]; list=l;size=t.size;}template <class T>Array<T>::~Array(){ delete []list;}template <class T> void Array<T>::rsize(int sz){ assert(sz>=0); T* l; l=new T [sz]; for(int i=0;i< (size=(size>sz)?sz:size);i++) l[i]=list[i]; delete []list; list=l; size=sz;}template <class T> T &Array<T>::operator [](int i){ assert(i >= 0 && i < size); return list[i];}template <class T> Array<T> &Array<T>::operator = (const Array<T>& 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> void Array<T>::display(){ for(int i=0;i<size;i++) cout<<list[i]<<" "; cout<<endl;}int main(){ Array<int> a(10); Array<int> b(a); cout<<"a:"<<endl; a.display(); cout<<"b:"<<endl; b.display(); a.rsize(11); a.display(); a[10]=b[9]; a.display(); return 0;}
0 0
- 模板之类模板(数组类模板)
- Array数组类模板
- C++模板数组类
- 数组类模板
- 数组类模板
- 模板、数组类
- C++ 数组类模板
- C++数组类模板
- 数组类模板
- 数组类模板
- 数组类模板
- 数组类模板
- 【十四】数组类模板
- -数组类模板
- 数组类模板
- 数组类模板
- 数组类模板
- 60-数组类模板
- PHP垃圾回收
- Android-版本控制 SVN
- 数据传输过程详解
- 如何做一个开心的程序员?
- 在VMware10中安装centos6.4详解
- -数组类模板
- 如何在线签订电子合同, 看这一篇就够了!
- 轻奢黑科技!这样的VIDAA互联网电视你期待吗
- Swift-基础-4
- SUID-SGID-SBIT
- Java 动态代理与反射机制
- Android Studio导入第三方类库的方法
- js中如何把时间戳转化为标准时间
- javascript语言是面向对象还是面向过程?