如何从矢量中删除所有元素

How to remove all elements from a vector

本文关键字:删除 元素      更新时间:2023-10-16

为什么这段代码不从向量中删除所有元素?谢谢!

for (int i = 0; i < vec.size(); i++)
  vec.erase(vec.begin());

因为ivec.size()在原始矢量大小的一半左右交叉路径。您可以简单地写while (!vec.empty()) ….

请注意,通过重复删除第一个元素来清除向量需要 O(n2) 时间(vec.clear()需要 O(1),除非元素具有非平凡析构函数,在这种情况下需要 O(n))。

除非您这样做是为了好玩,否则请使用 vec.clear() .

如果要确保立即释放所有内存,有一个既定的成语:

std::vector<YourTypeHere>().swap(vec);

这将创建一个最初为空的临时向量,将其内容与您的向量交换,然后临时向量在分号处死亡。