为什么vector.reserve(2)后跟v [0] = 2被认为是不正确的?

unj*_*nj2 3 c++ memory stl vector

所以根据我的理解,reserve不会初始化抽象,只是简单地分配空间以包含它们.但是不应该v [0]总是给你第一个单元化的内存,不应该分配一个值总是工作?

jog*_*pan 9

因为reserve不会改变矢量的大小.它只将向量移动到内存中的某个位置,在该位置有足够的空间允许向量的大小在必要时增加.

如果你想确定你可以打电话v[0]=2,甚至v[1]=0你应该使用resize(2),而不是reserve(2).