作者CYBASTER (复雠の业火)
看板C_Sharp
标题[问题]走访阵列或容器时做删除动作
时间Sat Mar 14 18:19:25 2009
版上诸位先进高手们好:
小弟最近帮人用C#开发一条程式,碰到一个问题,其实从前写C++就已经遇过,
那就是在走访循序式容器的途中作删除动作,基本上它让容器变短了,
存取的索引值也就跟着乱掉了,
比方说10个元素的阵列(for int i=0; i!=arr.Count; i++),索引值从0到9,
可是我把索引值6(此时i=6)的元素删掉时,索引值变成0到8,
下次再执行i++时,i从6变成7,可是新的索引值7「或许」代表原来的索引值8,
也或许整个乱掉了(我没有作仔细的实验),此时怎麽做才是绝对安全的呢?
(有个笨方法就是弄一个暂存容器把不打算删的通通拷过去,
原容器清空後再塞回来,但这实在太…了)
以往C++是用STL的erase演算法,
它就是透过回传一个新的iterator来重新做正确的衔接,
但C#里好像已经没有类似iterator的东西了,不知该怎麽处理呢?
请各位先进赐教,感激不尽!
--
二八佳人体似酥,腰中仗剑斩愚夫,虽然不见人头落,暗里教君骨髓枯。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.193.19.115
1F:推 joefaq:foreach 03/14 19:58
2F:→ CYBASTER:感谢回答 <(_ _)> 03/15 19:47