當我試圖練習一些基本的數據結構,如鏈接/雙向鏈接/回收鏈接/回收雙鏈表,AVL樹,紅黑樹, B-Tree和Treap通過在Swift 2中實現它們,我決定利用Swift 2的新特性來做這樣的事情:間接枚舉,因爲枚舉使空節點和填充節點比類更具語義。間接枚舉或類,我應該使用哪一個來構建基本數據結構
但很快就發現,對於非循環鏈接列表,插入元素後返回插入節點沒有意義,因爲返回的值是值類型而不是引用類型。據說您不能通過將信息直接寫入返回值來加速下一次插入,因爲它是插入節點的副本,但不是對插入節點的引用。
更糟糕的是,改變基於間接枚舉的節點意味着編寫關聯值的所有數據,這明確引入了不必要的系統資源消耗,因爲每個枚舉情況下的關聯值本質上都是一個元組,本質上是內存中的一種連續數據,這與結構相同,但不具有每個屬性訪問器來實現小批量數據寫入。
那麼我應該使用哪一個來構建這樣的基本數據結構呢?間接枚舉或類?