首先,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的空間大小就被釋放了
但其實說實在的,這個並沒有什么卵用,很少用到