模拟实现string的erase操作(用户视角,不知道数组下标是从0开始的)

erase(2,3)表示从第2个位置开始,连续删除3个字符。

思路一:

新开辟一个数组,进行深拷贝,把要删的字符绕过去,深拷贝到新开辟的数组中,释放新开辟的数组,最后用_str指向新开辟的数组。

经过上一次的实现插入的经验,我先思考思路,确定思路正确后再编写代码

思路一还是很好想的,可我在想思路儿是时候却犯了难...

思路二:

我想不新开辟新的,只在_str 中进行操作,比如"abcdef"想删除bc,其实很好想,但是移动着的时候得到的最后结果却是adefef,后面那两个字符"ef"怎么处理呢?

我百思不得其解,最后询问了豆包,在这是我才知道字符串最后面的'\0'是终止符,是c/c++的终止标志,当看到'\0'的时候就会停止,所以后面的"ef"不用我们特殊处理把'\0'放在adef后面就可以了,就会自动停止。

运行结果:

结果是正确的!

总结

一定要多思考,多问为什么,多了解底层的设计,遇到不会的应巧妙地结合AI,多问,知道自己明白了为止。

谢谢大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值