c++ 动态数组的实现

来源:互联网 发布:淘宝可以办假的毕业证 编辑:程序博客网 时间:2024/06/05 03:46

写动态数组的实现,苦思冥想终于做出来了,和大家分享一下:

 

#include <iostream>
using namespace std;
template <class T>
class CDynamicArray 
{
public:
 CDynamicArray();
    CDynamicArray(int n);
 virtual ~CDynamicArray();
 void traverse();
 void push_back(T m);
 void push_front(T m);
private:
 T *pData;
 int nExistedNum;
 int nMaxNum;
};

 

template <class T>
CDynamicArray<T>::CDynamicArray()
{
    int n = 10;
    pData = new T[n];
 nExistedNum = 0;
 nMaxNum = n;
}

 

template <class T>
CDynamicArray<T>::~CDynamicArray()
{

}

 

template <class T>
CDynamicArray<T>::CDynamicArray(int n)
{
 pData = new T[n];
 nExistedNum = 0;
 nMaxNum = n;
}


template <class T>
void CDynamicArray<T>::push_back(T m)
{
 if(nExistedNum > nMaxNum -1)
 {
  T *pDataTemp = new T[nMaxNum + 10];
  for(int i = 0;i < nMaxNum;i++)
  {
   pDataTemp[i] = pData[i];
  }
  delete pData;
  nMaxNum += 10;
  pData = pDataTemp;
 }
 pData[nExistedNum] = m;
 nExistedNum++;
}

 

template <class T>
void CDynamicArray<T>::push_front(T m)
{
 if(nExistedNum > nMaxNum -1)
 {
  T *pDataTemp = new T[nMaxNum + 10];
  for(int i = 0;i < nMaxNum;i++)
  {
   pDataTemp[i] = pData[i];
  }
  delete pData;
  nMaxNum += 10;
  pData = pDataTemp;
 }
 for(int i = nExistedNum; i >= 0; i--)
  pData[i+1] = pData[i];
 pData[0] = m;
 nExistedNum++;
}

 

template <class T>
void CDynamicArray<T>::traverse()
{
 for(int i=0; i<nExistedNum; i++)
  cout<<pData[i]<<endl;
}

 

int main()
{
 CDynamicArray<int> array;
 for(int i = 0;i < 20;i++)
 {
  array.push_back(i);
 }
 array.traverse();
 array.push_front(100);
 array.traverse();
 return 1;
}

原创粉丝点击