vector利用swap()函數進行內存的釋放


首先,vector與deque不同,其內存占用空間只會增長,不會減小。比如你首先分配了10,000個字節,
然后erase掉后面9,999個,則雖然有效元素只有一個,但是內存占用仍為10,000個。所有空間在vector析構時回收。

empty()是用來檢測容器是否為空的,clear()可以清空所有元素。
但是即使clear(),所占用的內存空間依然如故。如果你需要空間動態縮小,可以考慮使用deque。
如果非要用vector,這里有一個辦法:
使用這種方法的前提是vector從前存儲了大量數據,比如10000000,經過各種處理后,
現在只有100條,那么向清空原來數據所占有的空間,
就可以通過這種交換技術swap技法
就是通過交換函數swap(),使得vector離開其自身的作用域,
從而強制釋放vector所占的內存空間。

1 vector<int>a,b;
2 for(int i=1;i<=10;++i) a.push_back(i);
3 a.swap(b);//這樣a的空間大小就被釋放了

但其實說實在的,這個並沒有什么卵用,很少用到


免責聲明!

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



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