您的位置:首页 > 编程语言 > C语言/C++

C++实现的Vector类

2015-08-07 12:41 344 查看
template <typename Object>
class Vector
{
public:
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.size();l
theCapacity=rhs.theCapacityl\;
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=newObject[newCapacity ];
for( int k=0;k<theSize;k++)
object[ 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
{retrun 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
{
retrun objects[theSize-1];
}

typedef Object * iterator;
typedef const Object * const_iterator;

iterator begin()
{ return &objects[0];}
iterator end()
{ return &objects[size()]; }
const_iterator begin() const
{
return &objects[0];
}
const_iterator end()
{ return &object[ size() ]; }
enum { SPARE_CAPACITY =16};
private:
int theSize;
int theCapacity;
Object * object;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Vector