Stavo leggendo su C # 's ImmutableSortedDictionary
in System.Collections.Immutable
e pensare a come applicarla nel mio programma. Mi piacciono abbastanza i C ++ lower_bound
e upper_bound
(vedi qui ), e mi aspettavo piuttosto di vedere qualcosa del genere per le ricerche di intervallo. Tuttavia, metodi simili sembrano stranamente assenti dalla documentazione . Mi sto perdendo qualcosa? O MS fornisce veramente un dizionario ordinato senza un accesso efficiente agli intervalli ordinati? Questo non sembra esattamente qualcosa che si potrebbe fare su uno IEnumerable
dei tasti come dire un metodo di estensione, quindi sono un po 'perplesso non vedo qualcosa fornito direttamente dalla raccolta.
ImmutableList<T>
classe è anche implementata come un albero AVL. Dal codice sorgente :/// The root node of the AVL tree that stores this set.
ImmutableList<T>
(supportato da un albero AVL) rispetto a ImmutableArray<T>
(supportato da un array), secondo la documentazione . Motivi per utilizzare l'elenco immutabile: 1) L'aggiornamento dei dati è comune o il numero di elementi non dovrebbe essere ridotto. 2) L'aggiornamento della raccolta è più importante per le prestazioni rispetto all'iterazione dei contenuti.
IBinarySearchTree<K,V>
implementa sembra più vicino a quello che mi aspetterei. Mi chiedo se ci abbia mai armeggiato ulteriormente?