1 #include"iostream" 2 #include"stdio.h" 3 #include"algorithm" 4 #include"map" 5 using namespace std; 6 template7 struct TContainer 8 { 9 virtual void push(const T&)=0;10 virtual void pop()=0;11 virtual const T& begin()=0;12 virtual const T& end()=0;13 virtual size_t size()=0;14 };15 template 16 struct TVector:public TContainer 17 {18 static const size_t _step=100;19 TVector()20 {21 _size=0;22 _cap=_step;23 buf=0;24 re_capacity(_cap);25 }26 ~TVector()27 {28 free(buf);29 }30 void re_capacity(size_t s)31 {32 if(!buf)33 buf=(T*)malloc(sizeof(T)*s);34 else35 buf=(T*)realloc(buf,sizeof(T)*s);36 }37 virtual void push(const T& v)38 {39 if(_size>=_cap)40 {41 re_capacity(_cap+=_step);42 }43 buf[_size++]=v;44 }45 virtual void pop()46 {47 if(_size)48 _size--;49 }50 virtual const T& begin()51 {52 return buf[0];53 }54 virtual const T& end()55 {56 if(_size)57 return buf[_size-1];58 }59 virtual size_t size()60 {61 return _size;62 }63 const T& operator[](size_t i)64 {65 if(i>=0&&i<_size)66 return buf[i];67 }68 private:69 size_t _size;70 size_t _cap;71 T* buf;72 };73 74 int main()75 {76 TVector v;77 for(int i=0;i<100;i++)78 v.push(i);79 for(int i=0;i<100;i++)80 cout< <