c++ string底层原理 (三种实现方式)

简单的搜了下没搜到,然后看书看到了,一般都是自己记在OneNote笔记上,想到搜不到,就记在csdn上一起交流学习吧。

string主要有三种实现方式

1. 是直接拷贝(eager copy)--- 类似vector 内嵌char*指针 现在基本不用

2. 是copy on write---对多线程性能不好 g++采用这个方式

3. 则是短字符串优化SSO---string对象本身空间存储字符串 现在用的多

c++ string底层原理 (三种实现方式)_第1张图片

 

陈硕的《Linux多线程服务端编程》

主要是第三种 内部有个char buff [15]数组,短字符串直接放string对象的buff数组里面(栈中,性能好),长字符才会回退成第一种(类似vector)放在堆里面,性能就比较底下

所以string的增长方式和vector一样,都是2倍或1.5倍扩容 具体看编译器

你可能感兴趣的:(c++)