Я читал о С # 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.
ImmutableList<T>
(подкрепленные деревом AVL) перед ImmutableArray<T>
(подкрепленные массивом), согласно документации . Причины использования неизменяемого списка: 1) Обновление данных является распространенным явлением или число элементов не должно быть небольшим. 2) Обновление коллекции более критично для производительности, чем перебор содержимого.
IBinarySearchTree<K,V>
ее реализация выглядит ближе к тому, что я ожидал. Интересно, он когда-нибудь возился с этим дальше?