string容器

实现string容器:string 具有动态性,不必担心string的内存分配;只管添加新内容进去就行了,string会自动扩展并保存新的输入。
string 容器简单实现:

class Iterator;
class String
{
public:
typedef Iterator iterator;
String(char* pstr) :mpstr(new charstrlen(pstr) + 1)
{
strcpy(mpstr, pstr);
}
String(const String& rhs)
{
mpstr = new charstrlen(rhs.mpstr) + 1;
strcpy(mpstr, rhs.mpstr);
}
String& operator=(const String& rhs)
{
if (this != &rhs)
{
delete[] mpstr;
mpstr = new charstrlen(rhs.mpstr) + 1;
strcpy(mpstr, rhs.mpstr);
}
return *this;
}
~String()
{
delete[] mpstr;
mpstr = NULL;
}
char& operator[](int index)
{
return mpstr[index];
}
iterator begin();

iterator end();

private:
char* mpstr;
};
class Iterator
{
public:
Iterator(String* string, int p) :pstring(string), pos§
{}
Iterator& operator++()
{
++pos;
return this;
}
char& operator
()
{
return (pstring)[pos];
}
bool operator!=(const Iterator& rhs)
{
return pos != rhs.pos;
}
private:
String
pstring;
int pos;
};
String::iterator String::begin()
{
return iterator(this, 0);
}
String::iterator String::end()
{
return iterator(this, strlen(mpstr));
}
int main()
{
String str1(“hello world!”);
String::iterator it = str1.begin();
for (it; it != str1.end(); ++it)
{
std::cout << *it;
}
std::cout << std::endl;
return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值