看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的性能差