字符串类迭代器

#include
#include//C++ string
/*
迭代器:
1.作用:为容器提供统一的遍历方式,再提供遍历的前提下,使得使用人员无法清楚内部的存储结构,加强封装性。
2.面向对象的指针:作为对象却做一个指针在做的事情。

由于字符串类型,物理地址连续,采用下标访问的方式,更快,更方便,更好。所以做了优化。

总结:
迭代器的设计应该由容器开发人员来进行开发,根据不同容器的特点设计不同设计方案的迭代器,必须要有4个函数,
1.开始迭代的函数
2.结束迭代的函数
3.进行迭代的函数,也就是++;
4.访问的函数,也就是*,解引用。
*/
class String;
class Iterator
{
public:
Iterator(String * ptr,int idx)
:pstr(ptr),index(idx)
{ }
bool operator != (const Iterator& rhs)
{
return index != rhs.index;
}
Iterator& operator ++ ()
{
index++;
return *this;
}
Iterator operator ++ (int)
{
Iterator tmp(*this);
index++;
return tmp;
}
char & operator * ();
private:
String * pstr;
int index;
};

class String
{
public:
typedef Iterator iterator;
String(const char * ptr)
{
mptr = new charstrlen(ptr)+1;
strcpy_s(mptr,strlen(ptr)+1,ptr);
}
iterator begin()
{
return iterator(this,0);
}
iterator end()
{
return iterator(this,strlen(mptr));
}
char& operator [] (int index)
{
return mptr[index];
}
~String()
{
delete mptr;
mptr = NULL;
}
private:
char * mptr;
};

char & Iterator::operator *()
{
return (*pstr)[index];
}

int main()
{
String str(“hello world”);
String::iterator it = str.begin();
while (it != str.end())
{
std::cout << *it;
it++;
}
std::cout << std::endl;
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值