vector <int> vNew(v);(v是一個vector <int>)
按上面的語法,創(chuàng)建一個vector,是按照v的
實際元素個數(shù)創(chuàng)建新vector的。就是說,如果v中元素是1,2,3,那么,vNew中的元素是1,2,3,并且,vNew的
總?cè)萘?/span>也是3.
也就是:vNew的總?cè)萘咳Q于v的實際元素個數(shù)。
pVec->clear();
clear()只是刪除[first,last)區(qū)間中的所有元素,但并不釋放其內(nèi)存。
(std::vector <int >)(*pVec)
也就是創(chuàng)建一個臨時對象vector <int>,顯然,這個臨時對象的總?cè)萘渴侨Q于*pVec的實際元素個數(shù)的,而經(jīng)過
pVec->clear();的pVect的實際元素個數(shù)是0,因此,pVec- >swap( (std::vector <int >)(*pVec) ); 將這個臨時對象與pVec交換后,它的總?cè)萘孔兂闪?。
(vector中的swap()實現(xiàn)的是:將first、last,end_of_storage(總?cè)萘浚┮来谓粨Q)。
因此,實現(xiàn)了*pVec沒使用內(nèi)存的釋放。