vector清空與容量處理

2021-07-01 20:18:52 字數 522 閱讀 5818

vector的clear操作可以將vector的資料清空,但是vector的容量不會變化,即分配給vector的記憶體不會收回。如果想收回這些記憶體,可以採取下面的方法:

vectornum;

num.push_back(1);

num.push_back(2);

vector().swap(num);// 或者 num.swap(vector());

swap()是交換函式,使vector離開其自身的作用域,從而強制釋放vector所佔的記憶體空間,總而言之,釋放vector記憶體最簡單的方法是vector.swap(nums)。當時如果nums是乙個類的成員,不能把vector.swap(nums)寫進類的析構函式中,否則會導致double free or corruption (fasttop)的錯誤,(重複釋放記憶體)。

****如果vector中存放的是指標,那麼當vector銷毀時,這些指標指向的物件不會被銷毀,那麼記憶體就不會被釋放。此時需要先將vector中儲存的指標物件依次銷毀。

vector 清空操作

size vector容器真實大小,對應resize調整size大小,增加的元素為預設值。capacity 預分配的記憶體空間,對應reserve調整capacity大小。只是調整capacity大小,記憶體還是野的,如果用 進行訪問,可能出現陣列越界。include includeusing na...

vector大小與容量的關係

vector優異效能的秘訣之一,就是配置比其所容納的元素所需更多的記憶體。vector中的函式capacity 返回vector實際能夠容納的元素數量,如果超出這個數量,vector就會重新配置內部儲存器。一旦記憶體重新分配,和vector相關的所有引用 迭代器 指標都會失效,而重新分配這些有很耗時...

vector 容量和大小

include using namespace std include void printvecotr vector v cout endl vector容量的和大小操作 void test01 printvecotr v1 if v1.empty 如果為真代表數為空 else 重新指定大小 v1...