一、內存的釋放
(1)利用空變量替換:vector <類型>().swap(要釋放內存的vector);
(2)使用shrink_to_fit()函數:v.clear() + v.shrink_to_fit()
二、內存的縮放
vector和string等容器用起來方便,但是需要儘量避免重複內存分配,否則會影響效率。常常需要直接指定,或者使用reserve()函數來指定真實或最大Size。申請過多空間後會造成空間浪費,因此,再得到真實結果後一般需要對Vector空間進行適當縮放(shrink to fit),即修正過剩的空間。可以採用方法:
(1)resize()。resize()函數會自動銷燬尾部元素,從而達到縮放的效果。但是resize並不改變vector的capacity。
(2)vector <類型> vecsw(count); vecsw.swap(要縮放內存的vector)。其中,count爲計數等得到的真實長度。該方法可以釋放內存,改變capacity。
(3)v.reserve() + v.push_back() + v.shrink_to_fit()組合。push_back的速度主要受內存修改次數的影響,以前reserve內存,再push_back速率相較會有很大的提升,再shrink_to_fit刪除多餘的內存即可。