Czytałam o C # 's ImmutableSortedDictionary
w System.Collections.Immutable
i myślenie o tym, jak ją stosować w moim programie. Bardzo lubię C ++ lower_bound
i upper_bound
(patrz tutaj ), i raczej spodziewałem się czegoś w rodzaju wyszukiwania zakresów. Jednak podobne metody wydają się dziwnie nieobecne w dokumentacji . Czy coś brakuje? Czy też MS naprawdę zapewnia posortowany słownik bez skutecznego dostępu do posortowanych zakresów? Nie wydaje się, że to coś, co można zrobić na jednym IEnumerable
z klawiszy, jak powiedzmy metodę rozszerzenia, więc jestem trochę zaskoczony, że nie widzę czegoś dostarczonego bezpośrednio przez kolekcję.
ImmutableList<T>
Klasa jest również zaimplementowany jako drzewo AVL. Z kodu źródłowego :/// The root node of the AVL tree that stores this set.
ImmutableList<T>
(wspierane przez drzewo AVL) nad ImmutableArray<T>
(wspierane przez tablicę), zgodnie z dokumentacją . Powody korzystania z niezmiennej listy: 1) Aktualizowanie danych jest powszechne lub liczba elementów nie powinna być niewielka. 2) Aktualizacja kolekcji ma większe znaczenie dla wydajności niż iteracja zawartości.
IBinarySearchTree<K,V>
implementacja wygląda bliżej tego, czego się spodziewałam. Zastanawiam się, czy kiedykolwiek w dalszym ciągu majstrował przy tym?