私はC#のについて読んでいたImmutableSortedDictionary
中でSystem.Collections.Immutable
、私のプログラムでそれを適用する方法を考えます。私はC ++ lower_bound
とupper_bound
(ここを参照)をかなり気に入っており、範囲検索のようなものを見たいと思っていました。ただし、同様のメソッドがドキュメントに不思議に欠けているようです。何か不足していますか?または、MSはソートされた範囲への効率的なアクセスなしにソートされた辞書を本当に提供しますか?それはIEnumerable
、拡張メソッドのように、キーに対して実行できることとまったく同じではないようです。そのため、コレクションから直接提供されるものを見ていません。
ImmutableList<T>
クラスはまた、AVLツリーとして実装されています。ソースコードから:/// The root node of the AVL tree that stores this set.
リストがAVL trueを使用して不変性を実装することを意味するのか、それともAVLツリー自体が不変かを知っていますか?(とにかくツリーを公開しないので、それは問題ではないかもしれません)。
—
J Trana
ドキュメントによると、(配列に裏打ちされた
—
Theodor Zoulias
ImmutableList<T>
)に対するImmutableArray<T>
(AVLツリーに裏打ちされた)の利点は次のとおりです。不変リストを使用する理由:1)データの更新が一般的であるか、要素の数が少なくないことが期待されています。2)コレクションを更新することは、コンテンツを繰り返すことよりもパフォーマンスが重要です。
これは、大きなAVLツリーから要素を追加または削除するときに、ほとんどのノードを共有していくつかの新しいノードを作成するだけで、元のツリーを破壊せずに新しいツリーを取得できるためです。(永続的なデータ構造-木)
—
Theodor Zoulias
IBinarySearchTree<K,V>
実装は期待どおりに見えます。彼はそれをさらにいじくり回したのだろうか?