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