迭代器功能实现

迭代器的模式定义:提供一种方法能都依序访问某个聚合物(容器)内所含的各个元素,而又无需暴露该聚合物的内部表述方式。迭代器是一种类似指针对象,最重要的工作是进行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;
};

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值