我今天和我的同事想知道是否可以实现std :: vector来利用小缓冲区优化.通过查看C++ 11草案,我在23.3.1p8阅读
表达式a.swap(b),对于除数组之外的标准容器类型的容器a和b,应交换a和b的值,而不对单个容器元素调用任何移动,复制或交换操作.
这开始似乎取决于小缓冲区优化,但在as-if规则下,我们将被允许仍然对非类类型进行小缓冲区优化(因为我们无法观察到正在完成的复制).下一个文字似乎更难"傻瓜"
在交换之前引用一个容器中的元素的每个迭代器应该在交换之后引用另一个容器中的相同元素.
这是否足以阻止为std :: vector实现小缓冲区优化?有没有其他的路障或最终有可能有SBO的std :: vector?