immutable 不可變數據結構

傳統c系列語言,數據結構是可變的,例如c++中的數據結構實現,都是經典實現方案。c++

vector, set, map, unordered_map, priority_queue 對應着線性結構,樹狀結構,以及hash表結構等。git

可是對於immutable 不可變數據結構來說,例如 https://facebook.github.io/immutable-js/ , 它們的數據結構儘可能是以 樹狀結構實現的,多子節點數,經過增長內存佔用,來下降時間消耗。github

由於immutable 結構的修改操做,須要構建一個新的 immutable結構, 高效的作法就是 將樹狀結構中修改的 子樹部分路徑,從新建立一份,而將未修改的 部分,直接掛在新的樹狀結構下面,這樣就最大程度的減小了 建立新結構時候的 時間 和 內存消耗了數據結構

例如: erlang中的 array 結構 是一個10個孩子節點的樹狀結構排序

dict 實現爲一個2層的樹狀結構,每一個seg中存放16個元素,每一個元素都是一個bucket內存

gb_sets 通用平衡樹 實現的 setsget

gb_tree 平衡樹hash

orddict 只是一個排序了的 listit

ordsets 相似也只是一個 listio

相關文章
相關標籤/搜索