c++中自己MyString问题

string中连接 不使用new分配新的空间 而用指针
像 字符串 "aaaaa"中的最后一个a指向 字符串"bbbbb"中第一个b 形成一个新的指针

2个回答

你说的是链表,如果用链表,每个字符必须是一个节点,但是字符串很少用这种方式,效率太低。

因为“aaaaa”和“bbbbb”字符串已经存在于内存了,也就意味着它们已经各自有了自己的地址,而且“bbbbb”和“aaaa”在内存中肯定不是连续的(中间至少隔着一个byte的空间保存“\0”或者如果字符串使用标准库或者自定义的string对象保存的话还会有其他的数据)。

我感觉这里楼主是希望修改指针值之后依然可以线性获取字符值,比如Mystring[5] = 'b' 这样? 如果这样的话还需要重新定义[]操作符(因为内存地址不连续),
并且会出现楼上说的效率低的问题,因为现在的计算机读取连续内存空间的数据时效率远高于读取非连续内存,即使你在实现MyString的时候使用查找表效率也会低不少。

ps:既然楼主在使用C++,可以直接用std::string 嘛,虽然字符串连接在std::string里的实现也是new了新的内存空间。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐