【C++】string模拟实现

慈云数据 2024-05-11 技术支持 36 0

 🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343
🔥 系列专栏:http://t.csdnimg.cn/eCa5z

9efbcbc3d25747719da38c01b3fa9b4f.gif

目录

构造

 析构

遍历

迭代器

插入

删除、改变容量、赋值

交换

 查找

运算符重载

现代写法

拷贝构造 

 赋值

完整代码呈现

文件

测试代码


前言

    💬 hello! 各位铁子们大家好哇。

             今日更新string模拟实现的内容

    🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

构造

初始化列表部分,要开辟新空间初始化。三次调用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 
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon