std::string — 小字符串优化和交换
Posted
技术标签:
【中文标题】std::string — 小字符串优化和交换【英文标题】:std::string — small string optimization and swap 【发布时间】:2011-06-17 19:21:50 【问题描述】:来自 N3290,[container.requirements.general]:
表达式
a.swap(b)
,对于不是array
的标准容器类型的容器a 和b,应交换a 和b 的值,而不对各个容器元素调用任何移动、复制或交换操作。
这如何与小字符串优化交互?他们是不是也忘了加std::string
?
【问题讨论】:
我不认为字符串是这里使用的意义上的“容器”。 @Logan:那么问题就变成了:“字符串是容器吗?”,如果你能提供正确的引用,它就是答案。 @ybungalobill :basic_string
没有在 FDIS 的 Containers Library
章节中描述的事实是一个很好的线索。 ;-]
如果他们把概念留在里面,我们肯定知道...
@ildjarn:看来你是对的。这让我的问题毫无意义......
【参考方案1】:
(转自评论)
std::string
不是一个容器——basic_string
在 FDIS 的Containers library
章节(第 23 节)中没有描述这一事实是一个很好的线索。 ;-]
【讨论】:
耶!现在我知道vector<char>
和string
之间的另一个区别!
21.4 曾经声称 basic_string 是一个容器,但显然已为 FDIS 删除。
@Bo:是的,看来你也是对的。但在旧标准 C++98 中是 21.3:“basic_string 符合 Reversible Container 的要求”。以上是关于std::string — 小字符串优化和交换的主要内容,如果未能解决你的问题,请参考以下文章