是否需要清除STL载体

Pet*_*217 0 c++ stl vector clear

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

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

std::vector<double> myVector;
// use it
// finished with it
// use clear?
myVector.clear();
Run Code Online (Sandbox Code Playgroud)

Mar*_*som 5

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

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

std::vector<double>().swap(myVector);
Run Code Online (Sandbox Code Playgroud)

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

  • 你也可以在C++ 11中`clear()`然后`shrink_to_fit()`. (5认同)