void clear():刪除存儲在vector中的所有元素
一、
1.如果vector的元素是一些object,則它將為當前存儲的每個元素調用它們各自的析構函數。
2.如果vector存儲的是指向對象的指針,此函數並不會調用到對應的析構函數。會造成內存泄漏。想要刪除vector中的元素則應遍歷vector使用delete,然后再clear
for(int i = 0; i < vec.size(); ++i)
{
delete vec[i];
}
vec.clear();
調用clear后,vector的size將變成0,但是它的容量capacity並未發生改變,clear只是刪除數據,並未釋放vector的內存
vector的clear不影響capacity
如果想要清空vector的元素,使用clear,如果想要釋放vector的容量,可以使用swap
二、使用swap釋放vector的容量
vector<A>().swap(vec);
或者vec.swap(vector<A>());
重點:如果vector容器的元素是指針,先遍歷容器,delete每個元素指向的內存,然后再用swap