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的指针,就完成了拷贝构造。


赋值更加简单,再传值的时候就将其拷贝给了新的对象。

猜你喜欢

转载自blog.51cto.com/15085121/2679931
4-1