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]
}