C++ std::string—;小字符串优化和交换

C++ std::string—;小字符串优化和交换,c++,c++11,C++,C++11,从N3290开始,[容器.要求.概述]: 表达式a.swap(b),对于标准容器类型(而非array)的容器a和b,应在不调用单个容器元素上的任何移动、复制或交换操作的情况下交换a和b的值 这是如何与小字符串优化交互的?他们是否也忘了添加std::string?(从评论中转载) std::string不是一个容器–FDIS的容器库(§23)中没有描述basic_string这一事实是一个很好的线索 我不认为这里使用的字符串是一个“容器”。@Logan:那么问题就变成了:“字符串是一个容器吗?”,

从N3290开始,[容器.要求.概述]:

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

这是如何与小字符串优化交互的?他们是否也忘了添加
std::string

(从评论中转载)


std::string
不是一个容器–FDIS的
容器库(§23)中没有描述
basic_string
这一事实是一个很好的线索

我不认为这里使用的字符串是一个“容器”。@Logan:那么问题就变成了:“字符串是一个容器吗?”,如果你能提供一个正确的引用,它就是答案。@ybungalobill:FDIS的
容器库
一章中没有描述
基本字符串
,这是一个很好的线索如果他们留下概念,我们肯定知道…@ildjarn:看来你是对的。这让我的问题毫无意义…耶!现在我知道了
向量
字符串
之间的另一个区别!21.4曾声称基本_字符串是一个容器,但这显然是为了FDI而删除的。@Bo:是的,看来你也是对的。但在旧标准C++98中是21.3:“基本_字符串符合可逆容器的要求”。