.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