首页 > 其他 > 详细

Vector类的实现

时间:2015-02-05 11:18:57      阅读:296      评论:0      收藏:0      [点我收藏+]

实现部分vector的类

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){
       	delete [] objects;
       	theSize = rhs.size();
       	theCapacity = rhs.theCapacity;

       	objects = new Object[capacity()];
       	for(int k = 0; k < theSize; k++)
       	      objects[k] = rhs.objects[k];
       }
       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:
	int theSize;
	int theCapacity;
	Object *objects;
}


Vector类的实现

原文:http://blog.csdn.net/sina012345/article/details/43524735

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!