Je lisais à propos de C # 's ImmutableSortedDictionary
dans System.Collections.Immutable
et la réflexion sur la façon de l' appliquer dans mon programme. J'aime assez C ++ lower_bound
et upper_bound
(voir ici ), et je m'attendais plutôt à voir quelque chose du genre pour les recherches de plage. Cependant, des méthodes similaires semblent étrangement absentes de la documentation . Suis-je en train de manquer quelque chose? Ou MS fournit-il vraiment un dictionnaire trié sans accès efficace aux plages triées? Cela ne ressemble pas exactement à quelque chose que l'on pourrait faire sur l'une IEnumerable
des clés comme une méthode d'extension, donc je suis un peu perplexe de ne pas voir quelque chose fourni directement par la collection.
ImmutableList<T>
classe est également implémentée comme une arborescence AVL. Du code source :/// The root node of the AVL tree that stores this set.
ImmutableList<T>
(soutenu par une arborescence AVL) par rapport à ImmutableArray<T>
(soutenu par un tableau), selon la documentation . Raisons d'utiliser une liste immuable: 1) La mise à jour des données est courante ou le nombre d'éléments ne devrait pas être faible. 2) La mise à jour de la collection est plus critique en termes de performances que l'itération du contenu.
IBinarySearchTree<K,V>
mise en œuvre semble plus proche de ce à quoi je m'attendais. Je me demande s'il a jamais bricolé dessus?