#include<iostream> // 标准模板库当中Vector的简化版本 #include<vector> using namespace std; template<class t> class array { public: array(int size); size_t getVectorSize() { return _data.size(); } size_t getSize() { return _size; } public: vector<t> _data; size_t _size; }; template<class T> class Vector { T *start,*finish,*end; public: Vector():start(0),finish(0),end(0){} void push_back(const T &x) { int size=finish-start; if(end-finish>0) { *finish=x; finish++; } else { if(size==0) size=1; T* newStart=(T*)operator new(2*size*sizeof(T)); for(T *p=start,*q=newStart;p!=finish;p++,q++) { new (q) T(*p); } for(T *p=start;p!=finish;p++) p->~T(); finish=newStart+(finish-start); end=newStart+2*size; if(start!=NULL) operator delete(start); start=newStart; new (finish) T(x); finish++; } } int size() { return finish-start; } T& operator[](size_t i) { return start[i]; } };