一个快速的问题 - 可能是风格。是否需要在不再需要向量时清除/清空向量,或者当不再需要容器时,您是否可以简单地依靠 STL 自行清理。
在这种情况下,我说的是不包含指针或其他需要删除的对象的基本向量,例如。
std::vector<double> myVector;
// use it
// finished with it
// use clear?
myVector.clear();
清除向量没有任何好处,因为它不能保证放弃其存储。见capacity()
。
如果您真的关心向量使用的内存,可以使用一个小技巧将其替换为空向量:
std::vector<double>().swap(myVector);
当然,最简单的方法是让向量超出范围,它将自动销毁,并释放其所有存储空间。
当向量对象超出范围时,与其关联的资源将被恢复。
无需调用clear
,vector
会自行处理。clear
仅在您想再次使用该对象但想删除其所有内容时使用。