在大小达到保留容量之前,是否可以重新分配向量?

时间:2017-05-09 12:49:08

标签: c++ stl

假设我做v.reserve(1000000); 我保证在第一次v.size()等于1000000之前不会重新分配吗?

3 个答案:

答案 0 :(得分:2)

不会重新分配。

这是不合法的,因为插入具有足够容量的vector不会使迭代器(end迭代器除外)和对vector的引用无效。

答案 1 :(得分:0)

来自1

如果n大于当前矢量容量,则该函数会使容器重新分配其存储,将其容量增加到n(或更大)。

在所有其他情况下,函数调用不会导致重新分配,矢量容量也不会受到影响。

其中n是保留大小的元素的参数。

答案 2 :(得分:0)

如果您未达到保留的尺寸,则不应该有任何新的分配。

但是,您可以阅读this interesting article有关标准库和优化的信息。为了你的记忆。