Estaba leyendo sobre C # 's ImmutableSortedDictionary
en System.Collections.Immutable
y pensando acerca de cómo aplicarlo en mi programa. Me gustan bastante los C ++ lower_bound
y upper_bound
(ver aquí ), y esperaba ver algo parecido para las búsquedas de rango. Sin embargo, métodos similares parecen estar extrañamente ausentes de la documentación . ¿Me estoy perdiendo de algo? ¿O MS realmente proporciona un diccionario ordenado sin acceso eficiente a los rangos ordenados? Eso no parece exactamente algo que uno podría hacer en una IEnumerable
de las teclas como decir un método de extensión, por lo que estoy un poco perplejo porque no veo algo proporcionado directamente por la colección.
ImmutableList<T>
clase también se implementa como un árbol AVL. Del código fuente :/// The root node of the AVL tree that stores this set.
ImmutableList<T>
(respaldado por un árbol AVL) sobre ImmutableArray<T>
(respaldado por una matriz), de acuerdo con la documentación . Razones para usar la lista inmutable: 1) Actualizar los datos es común o no se espera que el número de elementos sea pequeño. 2) Actualizar la colección es más crítico para el rendimiento que iterar los contenidos.
IBinarySearchTree<K,V>
implementación se parece más a lo que esperaría. Me pregunto si alguna vez lo jugó más.