Eu estava lendo sobre C # 's ImmutableSortedDictionary
em System.Collections.Immutable
e pensar sobre como aplicá-la no meu programa. Eu gosto bastante de C ++ lower_bound
e upper_bound
(veja aqui ), e esperava ver algo do tipo para pesquisas de intervalo. No entanto, métodos semelhantes parecem estar estranhamente ausentes da documentação . Estou esquecendo de algo? Ou o MS realmente fornece um dicionário classificado sem acesso eficiente aos intervalos classificados? Isso não parece exatamente algo que alguém poderia fazer em uma IEnumerable
das teclas como, por exemplo, um método de extensão, por isso estou um pouco confuso por não estar vendo algo fornecido diretamente pela coleção.
ImmutableList<T>
classe também é implementada como uma árvore AVL. A partir do código fonte :/// The root node of the AVL tree that stores this set.
ImmutableList<T>
(suportado por uma árvore AVL) sobre o ImmutableArray<T>
(suportado por uma matriz), de acordo com a documentação . Razões para usar a lista imutável: 1) A atualização dos dados é comum ou o número de elementos não é pequeno. 2) Atualizar a coleção é mais crítico em termos de desempenho do que iterar o conteúdo.
IBinarySearchTree<K,V>
implementos parecem mais próximos do que eu esperaria. Será que ele alguma vez pensou nisso?