C++ shrink_to_fit()的實現

十一月zz發表於2017-12-26

有一種方法來把它從曾經最大的容量減少到它現在需要的容量。這樣減少容量的方法常常被稱為“收縮到合適(shrink_to_fit)”。該方法只需一條語句:

vector<int>(ivec).swap(ivec);

表示式vector<int>(ivec)建立一個臨時vector,它是ivec的一份拷貝:vector的拷貝建構函式做了這個工作。但是,vector的拷貝建構函式只分配拷貝的元素需要的記憶體,所以這個臨時vector沒有多餘的容量。然後我們讓臨時vector和ivec交換資料,這時我們完成了,ivec只有臨時變數的修整過的容量,而這個臨時變數則持有了曾經在ivec中的沒用到的過剩容量。在這裡(這個語句結尾),臨時vector被銷燬,因此釋放了以前ivec使用的記憶體,收縮到合適。


轉自:c++ vector物件方法用法

參考:C++ primer P318;

相關文章