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

hov*_*ovo 0 c++ stdvector

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

for (int i = 0; i < vec.size(); i++)
  vec.erase(vec.begin());
Run Code Online (Sandbox Code Playgroud)

Mar*_*tos 7

因为ivec.size()交叉路径大约是原始矢量大小的一半.你可以简单地写while (!vec.empty()) ….

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

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