在C ++中,方法resize
(std::vector
)改变了向量的大小(并在必要时构造/销毁对象),reserve
允许最终增加容量一个向量。 shrink_to_fit
会降低向量的容量以匹配其大小。当增加矢量大小时(通过resize
,push_back
或insert
),如果需要,容量将会增加(如果我没有记错,每次需要增加时它会增加一倍)。
标准是否确保向量永远不会减少其容量,除非调用函数shrink_to_fit
?或者,矢量容量是否可能根据编译器认为明智的做法而变化?
答案 0 :(得分:4)
不,矢量的容量不会减少reserve
或resize
。
如果
new_cap
[不大于capacity
] ......没有迭代器或引用无效。
当调整为较小的大小时,向量容量永远不会减少,因为这会使所有迭代器无效,而不是仅通过等效的pop_back()调用序列无效的那些迭代器。