我有矢量v,初始大小= 10.推10元素。 在添加第11个元素时,它将动态增大尺寸(N = N * 2),即20个元素。 现在vector有11个元素,可以容纳20个元素。
我的问题是,如果我们从矢量中删除任何点矢量容量的元素 从N = N / 2开始减少,就像它增加了N * 2.如果是,那么矢量或收缩的重新分配背后的策略是什么。因为如上所述 例如,如果我们删除第11个元素,它将缩小到10并且如果我们添加第11个则再次 它会成长。如果我继续添加和删除第11个元素,它将继续分配 并分配不好的记忆。
编辑: 如果答案是否则为例如。将1000个元素添加到向量中,现在已经弹出了990个元素,它仍然使用1000个元素的空间。这不是浪费记忆吗?
答案 0 :(得分:1)
向量不会缩小,除非您通过调用.shrink_to_fit()
告诉它缩小。 (即使在这里,请求也是非约束性的)