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