Vector 的操作

一、內存的釋放

(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刪除多餘的內存即可。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章