数组类模板
来源:互联网 发布:重庆网络推广平台 编辑:程序博客网 时间:2024/05/17 02:35
- #include <iostream>
- using namespace std;
- template <typename T>
- class Array
- {
- public:
- //构造函数
- Array():list(nullptr),size(0){};
- Array(T *ar,unsigned int len):size(len)
- {
- list = new T[size];
- for(unsigned int i = 0; i < len; ++i)
- list[i] = ar[i];
- }
- Array(const Array&);
- //下标运算符
- T& operator[](unsigned int n)
- { return list[n];}
- const T& operator[](unsigned int n) const
- { return list[n];}
- //赋值运算符
- Array& operator=(const Array& arr);
- //合并数组
- Array operator+(const Array& arr);
- void resize(unsigned int n);
- void show();
- ~Array(){delete [] list;}
- private:
- T *list;
- unsigned int size;
- };
- template <typename T>
- Array<T>::Array(const Array& arr)
- {
- if(list != nullptr)
- delete [] list;
- size = arr.size;
- list = new T[size];
- for(unsigned int i = 0; i < size; ++i)
- list[i] = arr[i];
- }
- template <typename T>
- Array<T> Array<T>::operator+(const Array& arr)
- {
- unsigned int i;
- unsigned int len = this->size+arr.size;
- T *t = new T[len];
- for(i = 0; i < this->size; ++i)
- t[i] = (*this)[i];
- for(unsigned int j = 0; j < arr.size; ++i,++j)
- t[i] = arr[j];
- Array temp(t,len);
- delete [] t;
- return temp;
- }
- template <typename T>
- Array<T>& Array<T>::operator=(const Array& arr)
- {
- if(this != &arr)
- {
- if(list != nullptr)
- delete [] list;
- size = arr.size;
- list = new T[size];
- for(unsigned int i = 0; i < size; ++i)
- list[i] = arr[i];
- return *this;
- }
- return *this;
- }
- template <typename T>
- void Array<T>::resize(unsigned n)
- {
- if(list == nullptr)
- {
- list = new T[n];
- size = n;
- return ;
- }
- else
- {
- T *temp = new T[n];
- for(unsigned i = 0; i < size; ++i)
- temp[i] = list[i];
- delete [] list;
- list = temp;
- size = n;
- return ;
- }
- }
- template <typename T>
- void Array<T>::show()
- {
- for(unsigned i = 0; i < size; ++i)
- cout << list[i] << " ";
- cout << endl;
- return ;
- }
- int main()
- {
- double a[8] = {1.1,2.1,3.1,4.1,5.1,6.1,7.1,8.1};
- double b[8] = {10.1,20.1,30.1,40.1,50.1,60.1,70.1,80.1};
- Array<double> array1(a,8),array3,array4;
- const Array<double> 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;
- }
0 0
- 模板之类模板(数组类模板)
- Array数组类模板
- C++模板数组类
- 数组类模板
- 数组类模板
- 模板、数组类
- C++ 数组类模板
- C++数组类模板
- 数组类模板
- 数组类模板
- 数组类模板
- 数组类模板
- 【十四】数组类模板
- -数组类模板
- 数组类模板
- 数组类模板
- 数组类模板
- 60-数组类模板
- atexit()
- 第34篇 翻译webrtc浏览器之间通信的官方文档
- 从本子文件名中提取本子的名字
- 欢迎使用CSDN-markdown编辑器
- 占位
- 数组类模板
- Eclipse下,Maven+JRebel安装破解手记
- JZOJ4773. 凸包
- parse()和valueOf()toString()的区别?
- 一天一个设计模式---观察者模式
- 动态规划:从新手到专家
- LightOJ 1262 Diagonal Sum 最大流
- VS1003芯片详解
- 简单万年历