0

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

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

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

3 回答 3

5

清除向量没有任何好处,因为它不能保证放弃其存储。见capacity()

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

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

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

于 2012-06-05T03:56:47.057 回答
3

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

于 2012-06-05T03:54:32.740 回答
2

无需调用clearvector会自行处理。clear仅在您想再次使用该对象但想删除其所有内容时使用。

于 2012-06-05T03:54:59.217 回答