64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include "myarray.h"
#include "arrayiterator.h"
#include "display.h"
#include "student.h"
using namespace std;
int main() {
myarray<student *> ary_s;
student *n1 = new student("Tom", 80);
student *n2 = new student("Jone", 75);
student *n3 = new student("Anna", 90);
ary_s.add(n1);
ary_s.add(n2);
ary_s.add(n3);
arrayiterator<student *> start(ary_s.Begin());
arrayiterator<student *> end(ary_s.End());
display<arrayiterator<student *> >(start, end);
return 0;
}
#ifndef _MYARRAY_H_
#define _MYARRAY_H_
#include <stdio.h>
#include<iostream>
using namespace std;
template <class T>
class myarray
{
private:
int m_nTotalSize;
int m_nValidSize;
T*m_pData;
public:
myarray(int nSize=3)
{
m_pData=new T[nSize];
m_nTotalSize=nSize;
m_nValidSize=0;
}
void add(T value)
{
if(m_nValidSize<m_nTotalSize)
{
m_pData[m_nValidSize]=value;
m_nValidSize++;
}
else
{
int i=0;
T*tmpData=new T[m_nTotalSize];
for(i=0;i<m_nTotalSize;i++)
{
tmpData[i]=m_pData[i];
}
delete []m_pData;
m_nTotalSize*=2;
m_pData=new T[m_nTotalSize];
for(i=0;i<m_nValidSize;i++)
{
m_pData[i]=tmpData[i];
}
delete []tmpData;
m_pData[m_nValidSize]=value;
m_nValidSize++;
}
}
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;
}
}
T*Begin()
{
return m_pData;
}
T*End()
{
return m_pData+m_nValidSize;
}
};
#endif