可以看到,每次循环,只有奇数位的数字被从列表移除了,偶数位的数字被保留下来。
原因:应该是 remove方法移动内存了,删除1的时候操作是把 2 3 4 5的内存向前移一位,2覆盖掉1,这时候3在原来2的位置。
for循环移动一位到了原来2的位置,也就是现在的3,和用cpp删除数组元素一样的道理。所以,迭代器里不要随便删元素,加元素,耗费的时间复杂度我猜一下应该是O(n),代价比较大。
可以看到,每次循环,只有奇数位的数字被从列表移除了,偶数位的数字被保留下来。
原因:应该是 remove方法移动内存了,删除1的时候操作是把 2 3 4 5的内存向前移一位,2覆盖掉1,这时候3在原来2的位置。
for循环移动一位到了原来2的位置,也就是现在的3,和用cpp删除数组元素一样的道理。所以,迭代器里不要随便删元素,加元素,耗费的时间复杂度我猜一下应该是O(n),代价比较大。