vector::resize 和 clear 的区别

看linux下面的stl源码, 发现stl的resize和clear区别不大。 

当resize的目标size比当前的size要大的时候, 需要insert到末尾处, 否则就erase到目标大小。  

代码为:

     void
      resize(size_type __new_size, const value_type& __x)
      {
if (__new_size < size())
 erase(begin() + __new_size, end());
else
 insert(end(), __new_size - size(), __x);
      }

 

而clear就是一个简单的

 erase(begin(), end()); 

所以从性能上来说, 同样清空vector, resize的性能要比clear的性能差

 

posted @ 2011-10-17 19:15  nosaferyao  阅读(1421)  评论(0编辑  收藏  举报