Множественные сравнения в очереди приоритетов С++?

Опубликовано: 6 Января, 2023

Что такое приоритетная очередь?

Priority Queue — это абстрактный тип данных, похожий на очередь, и каждый элемент имеет связанное с ним значение приоритета. Приоритет элементов в очереди приоритетов определяет порядок обслуживания элементов (т. е. порядок их удаления). Если в любом случае элементы имеют одинаковый приоритет, они обслуживаются в соответствии с их порядком в очереди.

Чтобы узнать больше об очереди с приоритетом, обратитесь к статье «Введение в очередь с приоритетом».

Что такое priority_queue STL в C++?

«priority_queue» — это адаптер контейнера, который обеспечивает поиск самого большого элемента в постоянное время за счет логарифмической вставки и извлечения. Мы можем использовать предоставленную пользователем функцию сравнения, чтобы изменить порядок, например, использование std::greater<T> приведет к тому, что наименьший элемент появится вверху.

Когда мы используем приоритетную очередь, мы в основном используем кучу в каком-то контейнере с произвольным доступом, преимущество которого заключается в том, что мы не можем случайно сделать данную кучу недействительной.

Приоритетная очередь с пользовательским компаратором

Custom comparators are static functions that are used to define the parameter on which the given container is going to be sorted. It determines the way in which the given container is going to be sorted. 

Если мы используем символ «>» , то мы пытаемся отсортировать в порядке возрастания, иначе мы пытаемся отсортировать в порядке убывания, поскольку « > » вернет true, когда a> b ( a больше, чем b ), иначе он вернет ЛОЖЬ. Таким образом, обмен произойдет, если компаратор вернет значение true, иначе обмен не произойдет.

Давайте посмотрим на программу и далее поймем, как эта концепция будет применяться.

Здесь мы видим, как компаратор используется для сравнения определенных типов данных и сортировки данных в соответствии с заданным компаратором.

Множественные сравнения в очереди приоритетов C++

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

Мы можем создать функцию компаратора, которая сравнивает более одного параметра и сортирует структуру данных на основе условий, предоставленных в компараторе. Ниже представлена реализация множественных сравнений в очереди приоритетов C++.