假设我写
std::vector<T> littleVector(1);
std::vector<T> bigVector;
bigVector.reserve(100);
bigVector = littleVector;
Run Code Online (Sandbox Code Playgroud)
标准是否bigVector
仍然会保留100个元素?或者,如果我要使用push_back
99个元素,我是否会体验内存重新分配?也许它甚至在STL实现之间有所不同.
这在此之前已经讨论过,但没有给出标准参考.
我正在查看C++标准(草案n3797),我找不到任何pop_back
适用的文档std::vector
,仅供参考std::list
.它真的不见了吗?
具体来说,我一直在寻找pop_back
不会改变容量的保证.还是有这样的保证?(我希望迭代器和对其他元素的引用仍然有效,但我找不到保证,并且它不会限制删除最后一个元素的情况,无论如何)
因此,如果我首先保留(100),添加一些元素,然后调整大小(0)(或小于当前大小的任何其他数字),向量是否会将内存重新分配给比100个元素少的空间?