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没使用内存的释放。