std::vector::reserve 实际上是如何工作的?

H-0*_*005 1 c++ vector stdvector dynamic-memory-allocation c++11

据我所知,.reserve()为向量保留内存而不实际修改其大小。但这是如何实现的呢?如何只保留内存而不分配内存呢?

编辑:我具体询问如何保留内存而不分配内存,而不是std::vector一般如何工作

joh*_*ohn 7

vector::reserve确实分配内存,所以你关于保留内存而不分配的问题是不正确的。关键是可以在不改变向量大小的情况下保留内存。基本上,向量有两种大小,即大小和容量。reserve分配内存并更改容量,但不更改大小。

在任何给定时间,以下情况都是正确的0 <= size <= capacity。容量反映了分配的内存量,大小反映了该内存中构造元素的数量。

  • @H-005 不,这不是真的(至少向量不是这样)。 (2认同)