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个元素。但我想你指的是单元素插入。