4-1(string底层的全部实现)
作者:互联网
今天主要将昨天未学完的string底层实现学完了,并且一一实现。
增加:
insert(pos,ch);insert(pos,str)即可插入字符,也可以插入字符串。需要注意就是插入需要移位。
resize(n,ch)的实现:主要是将size的值变为n,如果size不够,则补ch,分为3种情况,1、n<size; 2、n>size; 3、n>capacity;
erase(pos,len)pos位置开始删掉len长度的字符串。
find(pos,ch);在pos位置开始找ch,或者find(pos,str)pos位置开始找字符串str,找到范围下标,没找到返回npos。
另外学习了拷贝和赋值的现代实现写法
传统写法都是对象自己开辟空间以及自己对象自己复制,现代写法是利用别的对象拷贝,然后交换。
也就是利用一个新的对象调用构造函数,在其初始化时就将被拷贝对象的指针初始化给了新对象,再利用swap将其指针转换,这样qi就不需要自己动手了。如
//string s2(s3)
string tmp(s3._str);//这一步就将s3当初始值给了tmp;
swap(_str,tmp._str);交换s2和tmp的指针,就完成了拷贝构造。
赋值更加简单,再传值的时候就将其拷贝给了新的对象。
标签:tmp,ch,string,pos,全部,str,拷贝,底层 来源: https://blog.51cto.com/15085121/2679930