#include<stdio.h>
template<class T>
class MyArray
{
private:
int m_nTotalSize;
int m_nValidSize;
T *m_pData;
public:
MyArray(int nSize=3);
void add(T value);
int GetSize()
{
return m_nValidSize;
}
T Get(int pos)
{
return m_pData[pos];
}
virtual ~MyArray()
{
if(m_pData!=NULL)
{
delete[] m_pData;
m_pData=NULL;
}
}
};
template<class T>
MyArray<T>::MyArray(int nSize)
{
m_pData=new T[nSize];
m_nTotalSize=nSize;
m_nValidSize=0;
}
template<class T>
void MyArray<T>::add(T value)
{
if(m_nValidSize<m_nTotalSize)
{
m_pData[m_nValidSize]=value;
m_nValidSize++;
}
else
{
T *tmpData=new T[m_nTotalSize];
for(int i=0;i<m_nTotalSize;i++)
{
tmpData[i]=m_pData[i];
}
delete[] m_pData;
m_nTotalSize*=2;
m_pData=new T[m_nTotalSize];
for(int i=0;i<m_nValidSize;i++)
{
m_pData[i]=tmpData[i];
}
delete[] tmpData;
m_pData[m_nValidSize]=value;
m_nValidSize++;
}
}
int main()
{
MyArray<int>obj;
obj.add(1);
obj.add(2);
obj.add(3);
obj.add(4);
for(int i=0;i<obj.GetSize();i++)
{
printf("%d\n",obj.Get(i));
}
return 0;
}
编制动态数组的模板类
最新推荐文章于 2022-08-30 22:11:32 发布