.NET 4.0 вводит SortedSet<T>
класс, наряду с интерфейсом ISet<T>
, который осуществляется SortedSet<T>
и HashSet<T>
. Это, очевидно, упростит реализацию вашего собственного класса PriorityQueue<T>
.
Однако до сих пор нет интерфейса IQueue<T>
, который, по крайней мере, должен был бы признать необходимость очередей приоритетов или любой другой реализации, чем базовый BCL Queue<T>
. Точно так же нет IStack<T>
.
Лично я считаю, что некоторые из этих самых основных интерфейсов являются разочаровывающими и недальновидными, особенно потому, что стоимость разработки/спецификации/реализации/тестирования/документации для извлечения простого интерфейса из существующего класса должна быть очень низкой.
public interface IQueue<T> : IEnumerable<T>, ICollection, IEnumerable
{
T Dequeue();
void Enqueue(T item);
T Peek();
}
Там, смотри? Я сделал это.
Одна из первых вещей, которые я заметил при переходе с Java на C#. Нет очереди с приоритетом? Java даже имеет/имеет синхронизированные очереди приоритетов. – Carra
см. Также http://stackoverflow.com/questions/102398/priority-queue-in-net –