Welcome to Leon's Blog  
日历
<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
统计
  • 随笔 - 30
  • 文章 - 0
  • 评论 - 51
  • 引用 - 0

导航

常用链接

留言簿(4)

随笔分类

随笔档案

ACM

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
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没使用内存的释放。
posted on 2008-12-05 13:21 Leon916 阅读(481) 评论(0)  编辑 收藏 引用 所属分类: c++学习

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © Leon916 Powered by: 博客园 模板提供:沪江博客