为什么这段代码不能从向量中删除所有元素?谢谢!
for (int i = 0; i < vec.size(); i++)
vec.erase(vec.begin());
Run Code Online (Sandbox Code Playgroud)
因为i和vec.size()交叉路径大约是原始矢量大小的一半.你可以简单地写while (!vec.empty()) ….
请注意,通过重复删除第一个元素来清除向量需要O(n 2)时间(vec.clear()取O(1),除非元素具有非平凡的析构函数,在这种情况下它需要O(n)).
除非你这样做是为了好玩,否则请使用vec.clear().