【发布时间】:2016-05-12 19:57:10
【问题描述】:
resize() 根据给定的大小添加/删除元素。 reserve() 保留内存空间,它不会重新分配内存。我的问题是,resize 是否也与向量容量相同,只是不会增加?
要添加,请结合:
std::vector<X> vector;
vector.reserve(5);
vector.resize(5);
有意义吗?是多余的吗?这里的目标是能够覆盖向量中的值,而无需向量分配任何额外空间。
【问题讨论】:
-
作为测试,我使用 Visual Studio 注意到机器人调整大小和保留的容量保持不变。但是,这可能是对 VS 编译器的一些优化。
-
"reserve() 保留内存空间,它不会重新分配内存" -- 这应该是个问题吗?因为如果是陈述,那就错了。
-
reserve() 保留内存空间,不会重新分配内存。谁告诉你的?如果请求的大小大于容量,
reserve将分配更多内存。 -
简短且非常简单,
reserve设置容量,resize设置大小(可能还有容量)。