数据结构与算法分析之图3-7和图3-8——Vector类

来源:互联网 发布:苏州人口数据统计 编辑:程序博客网 时间:2024/06/03 17:07
/* ===================================================================== */template <typename Object>class Vector{public:explicit Vector( int initSize = 0 )             /* 构造函数初始化式 */: theSize( initSize ), theCapacity( initSize + SPARE_CAPACITY ){objects = new Object[theCapacity];}~Vector()                                       /* 析构函数 */{delete[] objects;}Vector( const Vector & rhs ) : objects( NULL )  /* 复制构造函数 */{operator=( rhs );}const Vector & operator=( const Vector & rhs )  /* 赋值操作符 */{if ( this != &rhs ){delete[] objects;theSize= rhs.size();theCapacity= rhs.theCapacity;objects = new Object[capacity()];for ( int k = 0; k < size(); k++ )objects[k] = rhs.objects[k];}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 k = 0; k < theSize; k++ )objects[k] = oldArray[k];theCapacity = newCapacity;delete[] oldArray;}Object & operator[]( int index ){return(objects[index]);}const Object & operator[]( int index ) const{return(objects[index]);}bool empty() const{return(size() == 0);}int size() const{return(theSize);}int capacity() const{return(theCapacity);}void push_back( const Object & x ){if ( theSize == theCapacity )reserve( 2 * theCapacity + 1 );objects[theSize++] = x;}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[size()]);}const_iterator end() const{return(&objects[size()]);}enum { SPARE_CAPACITY = 16 };private:inttheSize;inttheCapacity;Object* objects;};/* ===================================================================== */

0 0
原创粉丝点击