c++ std :: vector向下调整大小

C标准似乎也没有对容量的副作用发表任何声明
调整大小(n),n < size()或clear()。 它确实提出了关于push_back和pop_back-O(1)的摊销成本的声明 我可以设想一个通常的容量变化的实现
ala CLRS算法(例如当放大时为双倍,当将大小减小到< capacity()/ 4时)。
(Cormen Lieserson Rivest Stein)

有没有人有任何实施限制的参考?

调用尺寸较小的resize()对矢量的容量没有影响。它不会释放内存。

从向量释放内存的标准成语是用空的临时向量交换()它:std :: vector< T>()。swap(vec);.如果要向下调整大小,则需要将原始矢量复制到新的本地临时矢量中,然后将原始矢量与原始矢量进行交换。

更新:C 11为此添加了一个成员函数shrink_to_fit(),它是一个非绑定的请求,以将capacity()减小到size()。

http://stackoverflow.com/questions/1155693/stdvector-resize-downward

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c++ std :: vector向下调整大小