🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343
🔥 系列专栏:http://t.csdnimg.cn/eCa5z
构造
析构
遍历
迭代器
插入
删除、改变容量、赋值
查找
运算符重载
现代写法
拷贝构造
赋值
完整代码呈现
头文件
测试代码
前言
💬 hello! 各位铁子们大家好哇。
🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝
构造
初始化列表部分,要开辟新空间初始化。三次调用strlen效率太低,改进如下图:
我们的构造函数直接写一个全缺省的,这样就不用分开写无参和有参的构造了。上面缺省值不能给nullptr,因为初始化列表那里会报错,str为空,无法strlen。缺省值也不能给'\0',而要给"\0",因为'\0'的类型是char,不能给char*。其实给"\0"也是多余的,虽然可以这样写,我们可以直接给空字符串"",系统会在后面自动加上"\0"的。
string(const char* str="") : _size(strlen(str)) { _capacity = _size; _str = new char[_capacity + 1]; strcpy(_str, str); }
析构
~string() { delete[] _str; _str = nullptr; _size = _capacity = 0; }
遍历
//遍历 size_t size() const { return _size; } size_t capacity() const { return _capacity; } char& operator[](size_t pos) { assert(pos