迭代器功能实现

迭代器的模式定义:提供一种方法能都依序访问某个聚合物(容器)内所含的各个元素,而又无需暴露该聚合物的内部表述方式。迭代器是一种类似指针对象,最重要的工作是进行operator和operator->进行重载,除此之外还有++,==,=这一系列运算符的重载,不可避免地曝光了很多结构的实现细节。所以将迭代器的开发任务交给结构的设计者更加高效。
迭代器的简单实现:
template
class Iterator;
template
class Vector
{
public:
typedef Iterator> iterator;
typedef T value_type;
Vector()
{
mdata = new T[2];
cursize = 0;
totalsize = 2;
}
~Vector()
{
delete[] mdata;
mdata = NULL;
}
void push_back(T val)
{
if (IsFull())
{
resize();
}
mdata[cursize++] = val;
}
void pop_back()
{
if (IsEmpty())
{
throw exception(“vector is empty !”);
}
cursize–;
}
iterator begin()
{
return iterator(this, 0);
}
iterator end()
{
return iterator(this, cursize);
}
T& operator[](int index)
{
return mdata[index];
}
bool IsFull()
{
return cursize == totalsize;
}
private:
void resize()
{
T
pnewspace = new T[totalsize * 2];
memcpy(pnewspace, mdata, sizeof(T)*totalsize);
delete[]mdata;
mdata = pnewspace;
totalsize = 2;
}
T
mdata;
int cursize;
int totalsize;
};

猜你喜欢

转载自blog.csdn.net/weixin_43700671/article/details/88948722