STL-String源码分析
生活随笔
收集整理的這篇文章主要介紹了
STL-String源码分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
String定義
是一個模版:
template<class _E, class _Tr=char_traits<_E>, class _A=allocator<_E> >
class Mybasic_string
空間分配
先去增長空間_Grow,32個空間,額外增加一個\0;頭部是引用計數最大是255(char最大值)。
然后調用copy方法。
深度拷貝和淺拷貝
淺拷貝:
把string s1=s;
把s1的ptr指向s的ptr,并把ptr指向的空間的頭部元素的引用計數++;
當要釋放的時候,如果引用計數不為0,就不去釋放空間,至少減少引用計數。
深度拷貝:
如果要修改對象的時,必須要進行深度拷貝;否則修改空間的數據,所有的對象的都被修改了。
深度拷貝,必須重新開辟空間,并進行拷貝,并被凍結,引用計數被設置為255,不允許淺拷貝。
?
總結
以上是生活随笔為你收集整理的STL-String源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STL-红黑树源码实现
- 下一篇: STL-bitset源码解析