vector中刪除元素后,如何有效的釋放無效元素的內存


.erase()只是刪除了元素內容,並不能改變容量大小;

舉例:

35 void testvector()
36 {
38     vector v;
39     v.push_back(1);
40     v.push_back(2);
41     cout << "v size = " << v.size() << " v capacity = " << v.capacity()  << endl;
42     v.erase(v.begin());
43     cout << "v size = " << v.size() << " v capacity = " << v.capacity()  << endl;
44     vector(v).swap(v); // 清除v而且最小化它的容量
45     cout << "v size = " << v.size() << " v capacity = " << v.capacity()  << endl;
47 }

結果如下:
[hfx@didkey1 bin]$ ./test
v size = 2 v capacity = 2
v size = 1 v capacity = 2
v size = 1 v capacity = 1

.clear()函數,只能清空內容,不能改變容量大小
c. vector容器刪除不自動釋放內存,那么它存在內存泄露???不是的,vector在析構函數的時候,對內存進行了釋放。
d. 如果要想在刪除內容的同時釋放內存,那么你可以選擇deque容器。
e. 關於vector:
vector相當於c++中的數組,數組在初始化的時候也需要給它一個數組空間大小,vector申請的時候將預留一個空間,比如10,在元素超過10的時候,vector自動將大小
擴大到兩倍,並且將元素拷貝過去。

用法舉例:
 vector(v).swap(v);將v的內存空洞清除
 vector().swap(v);清空vec

 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM