请使用以下代码:
std::vector<int> a;
a.reserve(65536);
std::vector<int> b(a); //NOTE: b is constructed from a
a.reserve(65536); // no reallocation
b.reserve(65536);
Run Code Online (Sandbox Code Playgroud)
是否复制了容量?最后一行会有重新分配吗?标准是否对此有所说明或是否保持沉默?
假设我写
std::vector<T> littleVector(1);
std::vector<T> bigVector;
bigVector.reserve(100);
bigVector = littleVector;
Run Code Online (Sandbox Code Playgroud)
标准是否bigVector仍然会保留100个元素?或者,如果我要使用push_back99个元素,我是否会体验内存重新分配?也许它甚至在STL实现之间有所不同.
这在此之前已经讨论过,但没有给出标准参考.