STL-Vector容量問題:

qq_40848737發表於2020-12-10

1、clear,erase ,pop_back() 函式只刪除物件,並沒有釋放vec中的記憶體,若物件是指標還需要delete;
2、在erase,clear,pop_back()刪除物件的後,size改變,capacity保持不變,所以push_back也是在capacity範圍內進行插入新物件,當插入的資料數量大於capacity的時候,才進行擴容並再次插入;
3、釋放vec並清空capacity的方式:
{
delete vec[i];
vec[i]= NULL;
}
vec.clear(); //物件不為指標時可和上面的替換
vec.swap(vec<T*>());//若物件為指標,一定要先delete,否則也會造成記憶體洩漏;
4、 總結一下:
vector只有擴容,沒有減容之說,避免記憶體持續增長,對vector要進行適當釋放;

相關文章