Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 向量大小达到保留容量之前是否会发生重新分配?_C++_Stl - Fatal编程技术网

C++ 向量大小达到保留容量之前是否会发生重新分配?

C++ 向量大小达到保留容量之前是否会发生重新分配?,c++,stl,C++,Stl,假设我做了v.reserve(1000000) 我是否保证在第一次v.size()等于1000000之前不会发生重新分配?不会发生重新分配 这是不合法的,因为插入具有足够容量的向量不会使迭代器(除了结束迭代器)无效,并且引用到所述向量中: 如果n大于当前向量容量,该函数将使容器重新分配其存储,并将其容量增加到n(或更大) 在所有其他情况下,函数调用不会导致重新分配,向量容量也不会受到影响 其中n是要为其保留大小的元素的参数。如果未达到保留大小,则不应该有任何新的分配 不过,您可以阅读有关内存的标

假设我做了
v.reserve(1000000)

我是否保证在第一次
v.size()等于1000000之前不会发生重新分配?

不会发生重新分配

这是不合法的,因为插入具有足够容量的
向量
不会使迭代器(除了
结束
迭代器)无效,并且引用到所述
向量
中:

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

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


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

如果未达到保留大小,则不应该有任何新的分配


不过,您可以阅读有关内存的标准库“优化”的内容。

当然,如果您大量插入1000001个元素。但我想你指的是单元素插入。