erlangデータ構造--gb_trees

1386 ワード

1.今日はgb_ですtrees
1.1 key-valueデータ構造1.2.AAツリー実現(AVL、RB-tres、AAツリー区別見:住所)1.3.定義:{Size、Tree}Tree::要素があるのは{Key、Value、Smaller::Tree、Bigger:=空木nilで1.4.==同じかどうかを判断します.つまり、キー1.5個分のデータを格納します.
2.関数(注意すべき関数があります.)
2.1 balance(Tree 1)->Tree 2は、ツリーのバランスを取り戻すために使用されます.一般的には、この関数を呼び出す必要はありません.削除操作が多くない限り、期間中に挿入操作がない場合は、手動で起動できます.ツリーの再バランスは検索時間を減らすことができます.
2.2 iterator/1 next/1反復操作は、この関数が巡回した実行時間がgb_に少し足りないと公式に言われています.trees:to_リストの後に遍歴する時間ですが、長いリストを一気に生成する必要がないというメリットがあります.1> G1 = gb_trees:insert(1, a, gb_trees:empty()).{1,{1,a,nil,nil}}2> It = gb_trees:iterator(G1).[{1,a,nil,nil}]3> {Key, Value, It1} = gb_trees:next(It).{1,a,[]}4> gb_trees:next(It1).none2.3 map/25> gb_trees:to_list(G1).[{1,a}]6> F = fun(Key, Value) -> Key end.#Fun7> gb_trees:to_list(gb_trees:map(F, G1)).[{1,1}]
3.使用シーン
私たちはdictとgb_を知っています.treesは大量のデータを保存するために使用できます.両者の違いは?基本的に同じです.dictはよくより良い読み取り速度がありますが、両者は異なるインターフェースがあります.例えばgb_treesは最大値をとるインターフェースがあります.一番大切なのはgb_だと思います.treesは秩序があると考えられます.きちんとしたシーンが必要で、しかもボリュームが大きい場合、orddictは不向きです.dictも不向きです.gb_treesはいい選択です.
参考:http://learnyousomeerlang.com/a-short-visit-to-common-data-structures