天天看點

immutable 不可變資料結構

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

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

但是對于immutable 不可變資料結構來講,例如 https://facebook.github.io/immutable-js/ , 它們的資料結構盡量是以 樹狀結構實作的,多子節點數,通過增加記憶體占用,來降低時間消耗。

因為immutable 結構的修改操作,需要建構一個新的 immutable結構, 高效的做法就是 将樹狀結構中修改的 子樹部分路徑,重新建立一份,而将未修改的 部分,直接挂在新的樹狀結構下面,這樣就最大程度的減少了 建立新結構時候的 時間 和 記憶體消耗了

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

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

gb_sets 通用平衡樹 實作的 sets

gb_tree 平衡樹

orddict 隻是一個排序了的 list

ordsets 類似也隻是一個 list

版權聲明:本文為CSDN部落客「weixin_34066347」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34066347/article/details/91985900