24

我阅读了一些 GCC 错误报告,那里的人在谈论“vstring”。搜索 WEB 我注意到http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/vstring_8h.html

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

4

1 回答 1

23

GCCvstring是一个通用的字符串类,它是在 GCC 4.1 的libstdc++实现中引入的。

它与 兼容std::basic_string,具有以下附加详细信息:

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

DR431 是库工作组缺陷报告 431,选项 3 看起来像是为类实现更好的分配器支持,以允许更好的交换和其他与分配器相关的操作。

基本细节来自GCC 4.1 的发行说明,位于运行时库部分。

编辑:

看起来这个扩展的最初目的是为 C++11std::string实现提供基础。GCC/libstdc++ 贡献者 Paolo Carlini 在此GCC 错误报告中发表评论,其中<ext/vstring.h>包含 next 的非引用计数实验版本std::string。2012 年 4 月 12 日的评论:

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

于 2012-05-05T16:48:22.827 回答