Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
547 of 1492 menu
◀ ▶

Свойство 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
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить