是否需要清除STL载体

时间:2012-06-05 03:52:26

标签: c++ stl vector clear

一个简单的问题 - 可能是风格。 是否需要在不再需要时清除/清空矢量,或者当不再需要容器时,您可以简单地依靠STL来清理它。

我在这种情况下谈论的是不包含指针或其他需要删除的对象的基本向量,例如。

std::vector<double> myVector;
// use it
// finished with it
// use clear?
myVector.clear();

3 个答案:

答案 0 :(得分:5)

清除矢量没有任何好处,因为它不能保证放弃它的存储。请参阅capacity()

如果您真的关心向量使用的内存,可以使用一个小技巧用空向量替换它:

std::vector<double>().swap(myVector);

当然,最简单的方法是让向量超出范围,它将被自动销毁,并且所有存储都将被释放。

答案 1 :(得分:3)

当矢量对象超出范围时,将恢复与其关联的资源。

答案 2 :(得分:2)

无需致电clearvector将自行处理。仅当您想再次使用该对象但希望删除其所有内容时才使用clear