您的位置:首页 > 其它

第三章 表,栈和队列

2016-04-25 20:05 323 查看

3.4 Vector容器的C++实现

#include<string>
#include<algorithm>
#include<iostream>
using namespace std;
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();
theCapacity =rhs.theCapacity;
objects=new Object [capacity()];
for (int i = 0; i < size(); i++)
{
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=new Object [newCapacity];
for (int i = 0; i < theSize; ++i)
{
objects[k]=oldArray[k];
}
theCapacity=newCapacity;
delete [] oldArray;
}
Object & operator[](int index)
{
return objects;
}
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 begain()
{return &objects[0];}
const_iterator begain()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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: