c++ stl vector实现

来源:互联网 发布:淘宝联盟优惠卷设置 编辑:程序博客网 时间:2024/06/12 22:41

template<typename Object>

class vector

{

private:

Object* objects;

unsigned int theSize;

unsigned int theCapacity;

public:

explicit vector(int initSize=0);

vector(const vector<Object>& rhs);

void push_back(const Object& x);

void pop_back();

unsigned int size();

bool empty();

const vector& operator=(const vector<Object>& rhs);

Object& operator[](int index);

iterator begin();

iterator end();

};


template<typename Object>

vector<Object>::vector(int initSize):theSize(initsize),theCapacity(initSize+SPARE_CAPACITY)

{

objects = new Object[theCapacity];

}

template<typename Object>

vector<Object>::vector( const vector<Object>& rhs):objects(NULL)

{

this.operator=(rhs);

}

template<typename Object>

const vector vector<Object>::operator=(const vector<Object>& rhs)

{

delete []objects;

theSize = rhs.theSize;

theCapacity = rhs.theCapacity;

for(int i=0;i<rhs.size();i++)

{

objects[i]=rhs.objects[i];

}

return this;

}

template<typename Object>

unsigned int vector<Object>::size()

{

return theSize;

}

template<typename Object>

Object& vector<Object>::operator[](int index)

{

return objects[index];

}

template<typename Object>

bool vector<Object>::empty()

{

return theSize==0;

}

template<typename Object>

void vector<Object>::push_back(const Object& x)

{

if(theSiz==theCapacity)

reserve(2*theCapacity+1);

object[theSize++]=x;

}

template<typename Object>

void vector<Object>::pop_back()

{

object* s = objects[theSize];

delete s; 

theSize--;

}

template<typename Object>

itertor vector<Object>::begin()

{

return &object[0]

}



template<typename Object>

itertor vector<Object>::end()

{

return &object[theSize]

}



template<typename Object>

itertor vector<Object>::begin()

{

return &object[0]

}

原创粉丝点击