【问题标题】:std::string — small string optimization and swapstd::string — 小字符串优化和交换
【发布时间】: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:看来你是对的。这让我的问题毫无意义......

标签: c++ c++11


【解决方案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 的要求”。
猜你喜欢
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 2018-09-23
  • 2020-05-15
  • 2021-07-18
  • 2019-03-31
相关资源
最近更新 更多