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

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

string主要有三种实现方式

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

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

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

 

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值