我正在阅读有关C#的内容ImmutableSortedDictionary
,System.Collections.Immutable
并在考虑如何在程序中应用它。我非常喜欢C ++的lower_bound
和upper_bound
(请参阅此处),而我更希望看到某种范围查找。但是,文档中似乎缺少类似的方法。我想念什么吗?还是MS真正提供了分类字典,而没有有效访问分类范围?这似乎并不像可以对IEnumerable
扩展方法那样对某个键进行某些操作,所以我有点困惑,因为我没有看到集合直接提供的某些功能。
您是否知道这意味着列表使用AVL true来实现不可变性,还是AVL树本身是不可变的?(也许没关系,因为他们无论如何都不暴露树)。
—
J特拉娜
根据文档,这是
—
Theodor Zoulias
ImmutableList<T>
(由AVL树支持)相对于ImmutableArray<T>
(由数组支持)的优势。使用不可变列表的原因:1)更新数据很普遍,或者元素的数量预计不会很小。2)更新集合比迭代内容更重要。
这是因为从大型AVL树中添加或删除元素时,通过共享大多数节点并仅创建几个新节点,您可以在不破坏原始树的情况下获得一棵新树。(永久性数据结构-树)
—
Theodor Zoulias
IBinarySearchTree<K,V>
它的实现看起来更接近我的期望。我不知道他是否会进一步修改?