【问题标题】:Is it desirable to clear STL vector是否需要清除 STL 向量
【发布时间】:2012-06-05 03:52:25
【问题描述】:

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

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

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

【问题讨论】:

标签: c++ vector stl


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢 Naveen、Bukes 和 Mark。我认为可能是这种情况,但想确认一下,因为感觉有点“不精简”。
  • @GManNickG,现在假设每个人都可以使用 C++11 功能还为时过早。
  • @MarkRansom:但对于那些这样做的人来说,值得一提的是:)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-08-31
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      相关资源
      最近更新 更多