Efficace de trouver le plus proche de clé de dictionnaire

J'ai un tas de paires de dates et valeurs monétaires dans un SortedDictionary<DateTime, decimal>, correspondant à des soldes de prêts calculé dans l'avenir, au contrat défini par compoundage dates. Est-il un moyen efficace pour trouver une date clé qui est la plus proche à une valeur donnée? (Plus précisément, le plus proche de la clé inférieure ou égale à la cible). Le point est de ne stocker que les données lorsque la valeur a changé, mais efficace de répondre à la question "quel a été le bilan sur x date?" pour n'importe quelle date dans la gamme.

Une question semblable a été posée ( Qu'est-ce .NET dictionnaire prend en charge une "trouver le plus proche de la clé" opération? ) et la réponse était "non" à l'époque, au moins de la population qui a répondu, mais c'était presque 3 ans.

La question Comment trouver le point entre les deux clés de tri dictionnaire présente la solution la plus évidente de la naïveté de itérer sur toutes les touches. Je me demande si dans le cadre de la fonction existe pour tirer avantage du fait que les touches sont déjà indexés et classés dans la mémoire -- ou bien un construit-dans le Cadre de la collection de la catégorie qui se prête mieux à ce genre de requête.

  • Mais les clés d'un dictionnaire ne sont PAS triés dans la mémoire. C'est pourquoi vous ne pouvez pas faire une "le plus proche" ou de se "inférieur ou égal à" sur un dictionnaire.
  • La question liée a mentionner au sujet de SortedList<K, V> structure. Je voudrais aller avec qui.
InformationsquelleAutor Joshua Honig | 2012-09-13