[問題]走訪陣列或容器時做刪除動作

看板C_Sharp作者 (復讎の業火)時間15年前 (2009/03/14 18:19), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/2 (看更多)
版上諸位先進高手們好: 小弟最近幫人用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

03/14 19:58, , 1F
foreach
03/14 19:58, 1F

03/15 19:47, , 2F
感謝回答 <(_ _)>
03/15 19:47, 2F
文章代碼(AID): #19kuIn9T (C_Sharp)
文章代碼(AID): #19kuIn9T (C_Sharp)