[問題]走訪陣列或容器時做刪除動作
版上諸位先進高手們好:
小弟最近幫人用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
03/14 19:58, 1F
→
03/15 19:47, , 2F
03/15 19:47, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):