首页 »

2024年6月

源码看stl版本演进中string实现的变化——拷贝/移动的构造和赋值的实质动作和效率

C++标准库STL中的字符串string是基本类型,标准进化过程中对string的最终接口和行为方式有过变化和调整,主要的是C++11要求string不能使用COW(Copy on Write)机制。C++11前很多STL实现(以HP STL为基础衍生)使用的是引用计数支持的写时拷贝方式,即所谓COW,C++11后的基本使用独立堆空间读写各自内存。

这个主要变化前后,string复制和构造的方式,执行过程中着重点,资源和效率都有不同,在源码实现分析下这些变化,可总结出使用string各程序环境的功能实施和效率影响。

代码分析以g++采用的SGI STL为例,gcc支持C++11在版本4.8.5,不同的实现在这个版本前后。

继续阅读全文 »

  • 时间:
  • 分类:C++
  • 留言