C # .NET плохо отсортированные контейнеры - PullRequest
0 голосов
/ 11 ноября 2010

Я должен написать симулятор на основе событий в C #.Мне нужен отсортированный контейнер для планировщика, который имеет следующие возможности:

  • Ключ - пары значений хранятся отсортированными по ключу (время, пары делегатов)
  • Эффективные операции вставки и удаленияключ (самые маленькие элементы удаляются, вставки произвольные)
  • Наименьший элемент (пара значений ключа) может быть запрошен.

На самом деле мне нужно очень простое двоичное дерево илиотсортированная очередь или что-то подобное.Но варианты, которые у меня есть в .NET - SortedList и SortedDictionary - неудовлетворительны.У первой проблемы с эффективностью операций вставки и удаления, у второй проблемы с запросом самых маленьких элементов.

Должен ли я начать реализацию своего собственного контейнера или я что-то пропустил?Это настолько невероятно, что нет встроенного контейнера, который бы соответствовал моим потребностям.

Спасибо!

(обновление: я ищу решение под .NET 2.0)

Ответы [ 2 ]

4 голосов
/ 11 ноября 2010

Вы все еще можете использовать SortedDictionary, если вы сами отслеживали самый маленький элемент.

Но у меня такой же вопрос, как у @ Frédéric - что не так с sortedDictionary.First()?

Редактировать: Согласно предложению Фредерика, реализация Enumerable.First для .NET 2.0:

public static T First(IEnumerable<T> items)
{
    foreach (T item in items)
        return item;

    throw new InvalidOperationException("The source sequence is empty.");
}
0 голосов
/ 11 ноября 2010

Если коллекции .NET не обеспечивают нужную функциональность и производительность, возможно, вы захотите рассмотреть библиотеку C5 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...