看板 C_Sharp 關於我們 聯絡資訊
版上諸位先進高手們好: 小弟最近幫人用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
joefaq:foreach 03/14 19:58
CYBASTER:感謝回答 <(_ _)> 03/15 19:47