1、clear,erase ,pop_back() 函式只刪除物件,並沒有釋放vec中的記憶體,若物件是指標還需要delete;
2、在erase,clear,pop_back()刪除物件的後,size改變,capacity保持不變,所以push_back也是在capacity範圍內進行插入新物件,當插入的資料數量大於capacity的時候,才進行擴容並再次插入;
3、釋放vec並清空capacity的方式:
vec.clear(); //物件不為指標時可和上面的替換
vec.swap(vec());//若物件為指標,一定要先delete,否則也會造成記憶體洩漏;
4、 總結一下:
vector只有擴容,沒有減容之說,避免記憶體持續增長,對vector要進行適當釋放;
stl vector 容量與大小之間的關係
當對vector進行push back等操作的時候,當超出之前記憶體所分配的部分之後,需要新增記憶體空間存放更多元素。將原來的資料複製過來,釋放之前的記憶體,然後插入新增加的元素 那麼這個過程是怎麼樣的呢?我們用 來試一下 vs2013環境下如下 include includeusing names...
STLvector的記憶體問題
讀 資料結構預算法分析c 描述 人民郵電p54問題?vector類內部儲存查得資料 轉侵刪。用於自己學習 在stl的容器中,vector可以說是最容易理解和使用的容器了,以前使用陣列的時候,如果不確定有多少資料要儲存,就會預先分配乙個大的陣列,如果實際沒有用到那麼多,又會浪費很多的記憶體資源,如果不...
STL vector的erase操作問題
一老大說 csdn 上有篇博文 關於stl vector 的erase 黑奇怪,抱著獵奇的心態,偶也去湊哈熱鬧,發現了一點問題,報告給大家。作者說下面的 是錯誤的 vectorshort m uintvector m uintvector.push back 10 m uintvector.push...