http://www.codeofhonor.com/blog/avoiding-game-crashes-related-to-linked-lists
這篇作者寫了一個 介入式雙向鏈結串列
之前我在寫 C++ 時我的鏈結管理都是用傳統資料結構的作法
寫一個
struct 然後用指標去關連 , 一層層接下去
如圖所示,但這樣的話有幾個問題是,當你在移除時,效率就不會太好,你必需先找到那一個
然後再移除他,然後再把線給接回來
但原本這樣在資料數量不多時,其實影響的程度也不會有多大影響
不過這次因為我是要用在多執行緒的部份,
所以可能的情況下會有幾個行為會有影響
A緒行緒,一直加入物件
B執行緒,一直不斷循環物件做事情
C.執行緒.判斷事件做刪除物件
在這樣的情況下我剛好在尋找解決方案
這位作者寫的 List.h 可以解決我的這部份問題
第一他刪除物件時,鏈結不用再手動接回來,只要直接 delete 就可以
再來是他處理相關鏈結的方法有支援滿多的
比如
TestClass *gg = Tss.Head();
這樣就可以取得串列的開頭
employees.InsertTail(joe);
這樣就可以把串列加在最尾巴
delete honda;
刪除之後鏈結的關係不會中斷


沒有留言:
張貼留言