vector <int> vNew(v);(v是一個vector <int>)
按上面的語法,創建一個vector,是按照v的
實際元素個數創建新vector的。就是說,如果v中元素是1,2,3,那么,vNew中的元素是1,2,3,并且,vNew的
總容量也是3.
也就是:
vNew的總容量取決于v的實際元素個數。 pVec->clear();
clear()只是刪除[first,last)區間中的所有元素,但并不釋放其內存。
(std::vector <int >)(*pVec)
也就是創建一個臨時對象vector <int>,顯然,這個臨時對象的總容量是取決于*pVec的實際元素個數的,而經過
pVec->clear();的pVect的實際元素個數是0,因此,pVec- >swap( (std::vector <int >)(*pVec) ); 將這個臨時對象與pVec交換后,它的總容量變成了0。
(vector中的swap()實現的是:將first、last,end_of_storage(總容量)依次交換)。
因此,實現了*pVec沒使用內存的釋放。