在C++中,方法 resize (共个) std::vector ),更改向量的大小(并在必要时构造/销毁对象), reserve 允许最终增加向量的容量。 shrink_to_fit 将减少向量的容量以匹配其大小。增加向量大小时(通过 调整大小 ,则, push_back 或 insert ),容量将在需要时增加(如果我没有弄错的话,每次需要增加时,容量都会加倍)。
resize
std::vector
reserve
shrink_to_fit
调整大小
push_back
insert
标准是否确保向量永远不会减少其容量,除非函数 收缩到适合 是否调用?或者,向量容量是否可能根据编译器认为明智的做法而有所不同?
收缩到适合
不,矢量的容量不会减少 reserve 或 resize 。
std::vector::reserve :
std::vector::reserve
如果 new_cap 是[不大于 capacity ]。。。没有无效的迭代器或引用。
new_cap
capacity
std::vector::resize
当调整到更小的大小时,向量容量永远不会减少,因为这会使所有迭代器失效,而不仅仅是那些会被等效的pop\u back()调用序列失效的迭代器。
Relevant part of the standard