问题 std :: string - 小字符串优化和交换


来自N3290,[container.requirements.general]:

表达方式 a.swap(b),对于除标准容器类型的容器a和b array,应在不调用单个容器元素的任何移动,复制或交换操作的情况下交换a和b的值。

这如何与小字符串优化相互作用?他们忘了添加 std::string 太?


7967
2018-06-17 19:21


起源

我不认为字符串是这里使用的意义上的“容器”。 - Logan Capaldo
@Logan:然后问题变成:“字符串是一个容器吗?”,如果你能提供正确的引文,那将是答案。 - ybungalobill
@ybungalobill:这个事实 basic_string 没有描述 Containers Library FDIS的章节是一个很好的线索。 ; - ] - ildjarn
如果他们留下了概念,我们肯定知道...... - Steve Jessop
@ildjarn:看来你是对的。这让我的问题毫无意义...... - ybungalobill


答案:


(重新发表评论)

std::string 不是一个容器 - 这个事实 basic_string 没有描述 Containers library FDIS的第(§23章)是一个很好的线索。 ; - ]


11



好极了!现在我知道了另一个区别 vector<char> 和 string! - ybungalobill
21.4 以前 声称basic_string是一个容器,但显然已经删除了FDIS。 - Bo Persson
@Bo:是的,你似乎也是对的。但是在旧标准中它是21.3,C ++ 98:“basic_string符合可逆容器的要求”。 - ybungalobill