码迷,mamicode.com
首页 > 其他好文 > 详细

Vector类的实现

时间:2015-02-05 11:20:01      阅读:98      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!