C++ 自定义动态数组模板 |
|
#include "stdafx.h" #include <iostream> using namespace std; template <class T> class MyArray { int len; public: T *data; MyArray() { data = NULL; len = 0; } 'MyArray() { delete[] data; } T& operator [](int index); void push(T d); }; template <class T> T& MyArray<T>::operator [](int index) { if(index<0||index>(len-1)) { cout<<"Bad subscript!"<<endl; exit(1); } return data[index]; } template <class T> void MyArray<T>::push(T d) { T *pdata = data; data = new T[len + 1]; if(pdata != NULL) { for(int i = 0 ; i < len ; i++) { data[i] = pdata[i]; } delete[] pdata; } data[len] = d; len++; } //测试代码 int main(int argc, char* argv[]) { MyArray<int> a; a.push(11); a.push(22); a.push(33); a.push(55); a[0]=44; cout<<a[0]<<endl<<a[1]<<endl<<a[2]<<endl<<a[3]<<endl; return 0; } |