什么是用于动态缩小C ++ stl中的向量的策略?

时间:2015-04-11 19:30:07

标签: c++ vector stl

我有矢量v,初始大小= 10.推10元素。     在添加第11个元素时,它将动态增大尺寸(N = N * 2),即20个元素。     现在vector有11个元素,可以容纳20个元素。

我的问题是,如果我们从矢量中删除任何点矢量容量的元素      从N = N / 2开始减少,就像它增加了N * 2.如果是,那么矢量或收缩的重新分配背后的策略是什么。因为如上所述     例如,如果我们删除第11个元素,它将缩小到10并且如果我们添加第11个则再次     它会成长。如果我继续添加和删除第11个元素,它将继续分配     并分配不好的记忆。

编辑: 如果答案是否则为例如。将1000个元素添加到向量中,现在已经弹出了990个元素,它仍然使用1000个元素的空间。这不是浪费记忆吗?

1 个答案:

答案 0 :(得分:1)

向量不会缩小,除非您通过调用.shrink_to_fit()告诉它缩小。 (即使在这里,请求也是非约束性的)