【发布时间】:2014-11-12 01:21:23
【问题描述】:
向量在添加元素时,每次空间不足时,它们的大小都会加倍,但是当你删除元素时呢?假设您将 800 个元素添加到数组中,并且在添加第 800 个元素时,向量的大小会增加一倍,以便能够容纳 1600 个元素。现在如果你开始拿走元素到它只包含 5 或 10 个元素的程度怎么办?
它会认识到向量远小于为未来元素保留的空间大小的一半并保留更少的空间吗?
【问题讨论】:
-
如果您需要“保证”这一点,请使用
shrink_to_fit(请注意,它可以在技术上被忽略,但我认为没有任何作用)。 -
简短的回答是否定的——
erase()不会减少capacity()。 -
clear()也没有。 -
shrink_to_fit在 C++11 中添加;在此之前,您必须进行“交换黑客” -
@MattMcNabb: Which was also not necessarily reliable.
标签: c++ memory-management vector