第14周项目 2—数组类模板
来源:互联网 发布:重庆行知教育集团 编辑:程序博客网 时间:2024/04/30 11:30
*Copyright(c) 2016.烟台大学计算机与控制工程学院
*ALL rights reserved.
*文件名称:main.cpp
*作者:孙亚茹
*完成日期:2016年6月14日
*问题描述:在数组类的基础上,将之改为类模板。
*//
#include <iostream>#include <iomanip>#include <cassert>using namespace std;template <class T>class Array{private: T* list; int size;public: //成员函数声明 Array(int sz = 50); Array(T a[], int sz); Array(const Array &a); ~Array(); Array operator + (const Array &a2); Array &operator = (const Array &a2); T &operator[] (int i); const T &operator[] (int i) const; int getSize() const; void resize(int sz); void show()const;};template <class T>Array<T>::Array(int sz){ assert(sz >= 0); size = sz; list = new T [size];}template <class T>Array<T>::Array(T a[],int sz){ assert(sz >= 0); size = sz; size=sz; list=new T[size]; int i; for(i=0; i<size; i++) list[i]=a[i];}template <class T>Array<T>:: ~Array(){ delete []list;}template <class T>Array<T>::Array(const Array &a){ size=a.size; list=new T [size]; int i; for(i=0; i<size; i++) list[i]=a.list[i];}template <class T>Array<T> Array<T>::operator + (const Array &a2){ assert(size == a2.size); Array total(size); for (int i = 0; i < size; i++) total.list[i] = list[i]+a2.list[i]; return total;}template <class T>Array<T> &Array<T>::operator = (const Array &a2){ int i; if(&a2!=this) { if(a2.size!=size) { delete []list; size=a2.size; list=new T [size]; for(i=0; i<size; i++) list[i]=a2.list[i]; } } return *this;}template <class T>T &Array<T>::operator[]( int n){ if(n>=0&&n<size); return list[n];}template <class T>const T &Array<T>::operator[] (int n) const{ if(n >= 0 && n < size); return list[n];}template <class T>int Array<T>::getSize() const{ return size;}template <class T>void Array<T>::resize(int sz){ assert(sz >= 0); if (sz == size) return; T* newList = new T [sz]; T n = (sz < size) ? sz : size; for (int i = 0; i < n; i++) newList[i] = list[i]; delete[] list; list = newList; size = sz;}template <class T>void Array<T>::show()const{ int i; for(i=0; i<size; i++) cout<<list[i]<<" "; cout<<endl;}//要求测试函数能够运行出正确、合理的结果:int main(){ int a[8]= {1,2,3,4,5,6,7,8}; int b[8]= {10,20,30,40,50,60,70,80}; Array<int> array1(a,8),array3,array4; const Array<int> array2(b,8); array4=array3=array1+array2; array3.show(); array4.resize(20); array4[8]=99; cout<<array4[8]<<endl; cout<<array2[3]<<endl; return 0;}
总结:、
改为类模板后数组可以储存任意一个类型的数据,但同时类的成员函数也要写为类模板的形式, 主函数中数组声明时也要按着类模板的写。如: Array<int> array1(a,8),array3,array4;
const Array<int> array2(b,8);
0 0
- 第14周项目 2—数组类模板
- 第14周项目三—数组类模板
- 第14周实践项目-数组类模板
- 第14周项目3-数组类模板
- 第14周项目3:数组类模板
- 第14周项目4-数组类模板
- 第14周项目3--数组类模板
- 第14周项目3-数组类模板
- C++第14周项目模板【项目3-数组类模板】
- 第14周实践项目3——数组类模板
- C++第14周项目模板【项目2-两个成员的类模板】 !!!!!!!
- 第6周项目2 数组类
- 第14周实践项目2(2)——两个成员的类模板
- 第14周项目 2—两个成员的类模板 (2)
- 第14周实践项目2(1)——两个成员的类模板
- 第14周项目二——两个成员函数的类模板(2)
- 第14周项目 2—两个成员的类模板 (1)
- 第9周项目2—我的数组类
- Android--Demo_PullToRefresh(基础篇)
- asp.net Framework 与 asp.net core 知识
- 使用pl/sql来调用java
- 【iOS开发】Foreign famous blogs
- Android 判断View是否被遮挡
- 第14周项目 2—数组类模板
- 在raspberry运行xibo
- weblogic解决Jar包冲突
- LeetCode-155.Min Stack
- 论big data 3.0取代SAP HANA的可行性
- 大数据Kafka
- C++ eof()函数相关应用技巧分享
- getCacheDir()、getFilesDir()、getExternalFilesDir()
- [读书笔记]《Java程序员修炼之道》