网学网为广大网友收集整理了,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;
}