“for each”是否可以保证与更改阵列一起使用?

时间:2013-09-21 14:11:08

标签: c++ actionscript-3 flash loops foreach

1)在AS3中,如果有问题的数组在 期间发生变化,那么每个 的反无效循环都可以保证有效。 。 循环?通过更改,我的意思是插入/删除数组中的元素

2)如果在循环执行完毕后在数组中插入了一个元素,那么 是否仍会为每个 循环访问此元素?< / p>

3)上述任何答案是否适用于c ++ * for_each * 和C ++ 11基于范围的for-loop?

编辑:

好的,因为无论如何反无效循环显然都不聪明,有没有人知道是否有现成的智能库不会因这两种语言而失败?这样我就不用重新发明轮子了?

1 个答案:

答案 0 :(得分:0)

快速测试显示AS3版本根本不聪明:

var a:Array = [0,1,2];
for each (var b:Number in a) {
    trace(b);
    if (a.length < 10) a.unshift(b+10);
}

结果:

0
0
0
0
0
0
0
0
1
2

它一次又一次地遍历同一个元素。

因此我的问题的第1部分和第2部分得到了解答(不,它远非保证)。谁知道3?

修改

同样适用于C ++,需要进行自定义循环以避免迭代器失效。

正如马赫什所说: http://kera.name/articles/2011/06/iterator-invalidation-rules/