Czytałam o C # 's ImmutableSortedDictionaryw System.Collections.Immutablei myślenie o tym, jak ją stosować w moim programie. Bardzo lubię C ++ lower_boundi 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 IEnumerablez 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?