gpt4 book ai didi

c++ - "for each"是否保证可以与更改数组一起使用?

转载 作者:太空狗 更新时间:2023-10-29 23:17:16 29 4
gpt4 key购买 nike

1) 在 AS3 中,如果相关数组在 for.. . 循环?我所说的更改是指从数组中插入/删除元素

2) 如果在循环执行到一半后向数组中插入一个元素,该元素是否仍会被for each 循环访问?

3) 以上任何答案是否适用于 C++ *for_each* 和 C++11 基于范围的 for 循环?

编辑:

好吧,既然很明显无计数器循环无论如何都不聪明,有谁知道是否有现成的智能库不会因任何一种语言而失败?这样我就不必重新发明轮子了?

最佳答案

快速测试表明 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/

关于c++ - "for each"是否保证可以与更改数组一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18933587/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com