Класс PriorityQueue
Класс PriorityQueue<TElement, TPriority>
из пространства имён System.Collections.Generic
связывает каждый элемент с приоритетом.
По умолчанию раньше выходит элемент с меньшим
приоритетом; порядок задаёт
Comparer.
Добавление - через
Enqueue,
извлечение - через
Dequeue.
Синтаксис
PriorityQueue<TElement, TPriority> pq =
new PriorityQueue<TElement, TPriority>();
Пример
Давайте поставим элементы с приоритетами 3,
1 и 2 и снимем первый:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
PriorityQueue<string, int> pq =
new PriorityQueue<string, int>();
pq.Enqueue("c", 3);
pq.Enqueue("a", 1);
pq.Enqueue("b", 2);
Console.WriteLine(pq.Dequeue());
}
}
Результат выполнения кода:
"a"
Пример
Давайте опустошим очередь через Dequeue:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
PriorityQueue<int, int> pq = new PriorityQueue<int, int>();
pq.Enqueue(10, 3);
pq.Enqueue(20, 1);
pq.Enqueue(30, 2);
Console.WriteLine(pq.Dequeue());
Console.WriteLine(pq.Dequeue());
Console.WriteLine(pq.Dequeue());
}
}
Результат выполнения кода:
20
30
10
Пример
Давайте посмотрим важный элемент через Peek:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
PriorityQueue<string, int> pq =
new PriorityQueue<string, int>();
pq.Enqueue("b", 2);
pq.Enqueue("a", 1);
Console.WriteLine(pq.Peek());
Console.WriteLine(pq.Count);
}
}
Результат выполнения кода:
"a"
2
Смотрите также
-
метод
Enqueue,
который ставит элемент с приоритетом -
метод
TryDequeue,
который снимает без исключения на пустой очереди -
класс
Queue<T>,
который работает строго FIFO -
интерфейс
IComparer,
который задаёт порядок приоритетов