vector类的实现

来源:互联网 发布:淘宝卖家运营 编辑:程序博客网 时间:2024/06/05 10:39
template<typename Object>class Vector{public:enum {SPARE_CAPACITY=16};explicit Vector(int initSize=0):theSize(initSize),theCapacity(initSize+SPARE_CAPACITY){objects=new Object[theCapacity];}Vector(const Vector &rhs):objects(NULL){operator=(rhs);}~Vector(){delete []objects;}const Vector &operator=(const Vector &rhs) {if(this!=&rhs){delete []objects;theSize=rhs.theSize;theCapacity=rhs.theCapacity;objects=new Object[theCapacity];for(int i=0;i<theSize;i++)objects[i]=rhs.objects[i];}return *this;}void resize(int newSize){if(newSize>theCapacity)reserve(newSize*2+1);theSize=newSize;}void reserve(int newCapacity){if(newCapacity<theSize)return;Object *oldArray=objects;objects=new Object[newCapacity];for(int i=0;i<theSize;i++)objects[i]=oldArray[i];theCapacity=newCapacity;delete []oldArray;}Object &operator[](int idx){return objects[idx];}const Object &operator[](int idx) const{return objects[idx];}bool empty(){return theSize==0;}int size(){return theSize;}int capacity(){return theCapacity;}void push_back(const Object &x){if(theSize==theCapacity)reserve(theCapacity*2+1);objects[theSize]=x;theSizee++;}void pop_back(){theSize--;}const Object &back() const{return objects[theSize-1];}typedef Object* iterator;typedef const Object* const_iterator;iterator begin(){return &objects[0];}const_iterator begin() const{return &objects[0];}iterator end(){return &objects[theSize];}const_iterator end() const{return &objects[theSize];}private:int theSize;int theCapacity;Object *objects;};
没有考虑到错误检测,迭代器失效
原创粉丝点击