Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么是GCC';s";vstring";?_C++_Gcc - Fatal编程技术网

C++ 什么是GCC';s";vstring";?

C++ 什么是GCC';s";vstring";?,c++,gcc,C++,Gcc,我读了一些GCC错误报告,那里的人在谈论“vstring”。搜索我注意到的网页 有人能详细说明一下它的用途吗?为什么要使用它而不是std::string?GCC的vstring是一个多功能字符串类,它是在gcc4.1的libstdc++实现中引入的 它与std::basic_string兼容,具有以下附加细节: 提供了两个基类: 默认值避免引用计数,并针对短字符串进行了优化 另一种方法仍然使用它(即参考计数),同时在一些低级别区域(例如对齐)进行改进。有关一些有用的typedef,请参见vs

我读了一些GCC错误报告,那里的人在谈论“vstring”。搜索我注意到的网页


有人能详细说明一下它的用途吗?为什么要使用它而不是std::string?

GCC的
vstring
是一个多功能字符串类,它是在gcc4.1的
libstdc++
实现中引入的

它与
std::basic_string
兼容,具有以下附加细节:

  • 提供了两个基类:
    • 默认值避免引用计数,并针对短字符串进行了优化
    • 另一种方法仍然使用它(即参考计数),同时在一些低级别区域(例如对齐)进行改进。有关一些有用的typedef,请参见
      vstring_fwd.h
  • 各种算法已被重写(例如,替换),代码简化并添加了简单的优化
  • DR 431的选项3对两个可用的基址都实现,因此改进了对有状态分配器的支持
DR431是,选项3看起来像是为类实现更好的分配器支持,以允许更好的交换和其他分配器相关操作

基本详细信息来自“运行时库”部分下的

编辑:

这个扩展的最初目的似乎是为C++11
std::string实现提供基础。GCC/libstdc++撰稿人保罗·卡里尼(Paolo Carlini)在这篇文章中评论说,
包含下一个
std::string
的非参考计数实验版本。2012年4月12日的评论:

我们试图解释的是,这类问题是众所周知的,而且或多或少 较少,影响任何引用计数的实现。。。 如果不使用引用计数,则情况并非如此,事实上也不会如此 (根据新的C++11标准)在
std::string
的新实现中使用 我们目前展示的是


你所提供的链接在顶部提到“这个文件是标准C++库的GNU扩展”,当然,这并不能完全回答你的问题。如果内存服务,那是一个实验性的重新实现<代码> STD::String ,界面相同但不同的内脏。该文件的版权日期为2005-2007年,自那以后就没有了;建议在这段时间内搜索该网站,以获取相关信息。发明该网站的理由是什么?它最终会成为std::string的实现吗?@johanneschaub litb-我相信这是
ext/vstring.h
的最初目的,它将提供一个非引用计数的字符串实现,最终将成为默认值(或作为基础)为GCC的C++11实现提供了一个新的
std::string
实现。GCC邮件列表和bug报告中有各种各样的注释,似乎都指向了这一点,比如这个注释:和这个:。这是我不问就知道的。这意味着它尚未成为
std::string
实现的唯一原因是ABI兼容性约束。随着GCC 5中的ABI转换,我引入了一个新的
std::basic_string
实现,从vstring的SSO版本复制了大部分代码。对于那些不认识首字母缩写词的人(就像几秒钟前的我一样)-SSO是上面提到的“短字符串优化”。另请参见这里的Stackoverflow。