Ich lese über C # 's ImmutableSortedDictionary
in System.Collections.Immutable
und darüber nachzudenken , wie es in meinem Programm zu bewerben. Ich mag C ++ lower_bound
und upper_bound
(siehe hier ) sehr, und ich hatte eher erwartet, etwas Ähnliches für Range-Lookups zu sehen. Ähnliche Methoden scheinen jedoch in der Dokumentation seltsamerweise nicht vorhanden zu sein . Vermisse ich etwas Oder bietet MS wirklich ein sortiertes Wörterbuch ohne effizienten Zugriff auf die sortierten Bereiche? Das scheint nicht gerade etwas zu sein, das man an einem IEnumerable
der Schlüssel als Erweiterungsmethode tun könnte , also bin ich ein bisschen verwirrt, dass ich etwas nicht sehe, das direkt von der Sammlung bereitgestellt wird.
ImmutableList<T>
Klasse ist auch als AVL-Baum implementiert. Aus dem Quellcode :/// The root node of the AVL tree that stores this set.
ImmutableList<T>
(von einem AVL-Baum unterstützt) gegenüber dem ImmutableArray<T>
(von einem Array unterstützt) gemäß der Dokumentation . Gründe für die Verwendung einer unveränderlichen Liste: 1) Das Aktualisieren der Daten ist üblich oder es wird nicht erwartet, dass die Anzahl der Elemente gering ist. 2) Das Aktualisieren der Sammlung ist leistungskritischer als das Iterieren des Inhalts.
IBinarySearchTree<K,V>
Implementierung sieht näher an dem aus, was ich erwarten würde. Ich frage mich, ob er jemals weiter daran herumgebastelt hat.