实现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;
}