Я читав про 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>цього інструменту виглядає ближче до того, що я очікував. Цікаво, чи він коли-небудь загравав на цьому?