【发布时间】:2012-10-19 05:10:25
【问题描述】:
考虑以下代码:
std::vector vec;
vec.reserve(500);
size_t cap = vec.capacity();
std::vector newVec = std::move(vec);
assert(cap == newVec.capacity());
在您遇到的几乎任何实现中,这都会起作用。我不在乎实现是做什么的。我想知道标准需要什么。移至vector 的容量是否与原始容量相同?还是断言会触发?
【问题讨论】:
-
如果容量发生变化,那将完全破坏首先具有移动语义的动机,即避免不必要的复制和重新分配。不过我手头没有标准,所以不能给你正确的答案。
标签: c++ c++11 stdvector language-lawyer move-semantics