什么是GCC的“vstring”?

时间:2012-05-05 16:39:28

标签: c++ gcc

我读了一些GCC bug报道,其中有人在谈论“vstring”。搜索WEB我注意到http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/vstring_8h.html

有人可以详细说明它的用途和用途吗?为什么要使用它而不是std :: string?

1 个答案:

答案 0 :(得分:23)

GCC的vstring是一个多功能的字符串类,在GCC 4.1的libstdc++实现中引入。

它与std::basic_string兼容,并附带以下详细信息:

  • 提供两个基类:
    • 默认值避免引用计数,并针对短字符串进行了优化;
    • 备用的,仍在使用它(引用计数,即),同时在几个低级区域(例如,对齐)中进行改进。有关一些有用的typedef,请参阅vstring_fwd.h
  • 已经重写了各种算法(例如,替换),添加了代码简化和简单优化。
  • DR 431的选项3针对两个可用基础实现,从而改进了对有状态分配器的支持。

DR431是Library Working Group Defect Report 431,选项3看起来像是为类实现更好的分配器支持,以允许更好的交换和其他与分配器相关的操作。

基本详细信息来自运行时库部分下的GCC 4.1's release notes

编辑:

看起来这个扩展的最初目的是为C ++ 11 std::string实现提供基础。 GCC / libstdc ++撰稿人Paolo Carlini在GCC Bug Report中评论<ext/vstring.h>包含下一个std::string的非参考计数实验版本。评论日期为2012年4月12日:

  

我们试图解释的是,这类问题众所周知,而且更多或更多   更少,影响任何引用计数实现...   不使用引用计数时的情况并非如此,实际上它   在std::string的新实现中使用(根据新的C ++ 11标准)   我们目前正在展示为<ext/vstring.h> ...