Свойство Comparer
Свойство Comparer класса
PriorityQueue<TElement, TPriority>
возвращает IComparer<TPriority>,
используемый при Enqueue и Dequeue.
По умолчанию это сравнение по возрастанию,
поэтому меньший приоритет выходит первым.
Синтаксис
IComparer<TPriority> cmp = pq.Comparer;
Пример
Давайте сравним два приоритета через Comparer:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
PriorityQueue<string, int> pq =
new PriorityQueue<string, int>();
Console.WriteLine(pq.Comparer.Compare(1, 3));
}
}
Результат выполнения кода:
-1
Пример
Давайте создадим очередь с обратным Comparer:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
PriorityQueue<string, int> pq =
new PriorityQueue<string, int>(
Comparer<int>.Create((a, b) => b.CompareTo(a)));
pq.Enqueue("a", 1);
pq.Enqueue("b", 3);
Console.WriteLine(pq.Dequeue());
}
}
Результат выполнения кода:
"b"
Пример
Давайте убедимся, что Dequeue следует Comparer по умолчанию:
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.Comparer.Compare(1, 2));
}
}
Результат выполнения кода:
20
-1
Смотрите также
-
метод
Enqueue,
который использует Comparer при вставке -
метод
Dequeue,
который выбирает минимум по Comparer -
интерфейс
IComparer,
который описывает сравнение приоритетов -
класс
SortedSet<T>,
который тоже опирается на IComparer