我想知道std::vector::reserve()
在以下情况下的行为:
reserve(N)
立即被多次调用。较早的
reserve(N1)
是否会加起来或被覆盖? reserve(N1)
被最新的通话覆盖,那么,如果最新的
reserve(Nn)
要求的插槽数量更少,会发生什么情况? vector
X个元素,则在声明push_back()
之后,然后我们调用
reserve(N)
。请问已经push_back()
XN
中包含的元素? vector
具有一些X推送元素,那么现在push_back()
再增加1个元素(X + 1),则该对象将不得不搬迁;但是我们还没有执行
push_back()
。什么如果现在调用
reserve()
会发生什么情况?对象会被重新放置吗立即地 ?如果没有,那么如何保留空间?
最佳答案
reserve()
仅确保 vector 的分配内存至少足以容纳作为其参数传递的项目数。因此...
reserve()
时, vector 将分配必要的内存,以存储传递给reserve()
的项目数。 引用实际标准:
void reserve(size_type n)
关于c++ - vector 的reserve()方法的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9304894/