- priority_queue или очередь с приоритетом - это очередь в которой элементы сортируются по возрастанию значений - самый большой элемент становится верхним (читается методом top() и удаляется методом pop()).
- Подключается через include <queue>.
Метод | Описание | Пример | Сложность | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emplace(Args&&... args) | Создает и вставляет элемент в конец очереди. | pq.emplace(5); | O(1) | ||||||||||||
empty() | Возвращает пустая ли очередь. | if(pq.empty()) | O(1) | ||||||||||||
pop() | Удаляет верхний (самый большой) элемент очереди. | pq.pop(); | O(1) | ||||||||||||
push(const T& val) | Вставляет элемент в вершину очереди. | pq.push(12); | O(1) | ||||||||||||
priority_queue() | Конструктор пустой очереди; | queue<int> pq; | O(1) | ||||||||||||
priority_queue(iterator it_begin, iterator it_start) | Конструктор очереди из диапазона итераторов другого контейнера. | priority_queueO(n)
| priority_queue(const priority_queue pq1)
| Конструктор копирования, создает очередь из значений другой очереди.
| priority_queue | O(n)
| size()
| Возвращает количество элементов очереди.
| size_t sz = pq.size();
| O(1)
| swap(stack& pq1)
| Обменивает содержимое 2х очередей
| pq.swap(pq1);
| O(1)
| |
#include <iostream> // cout
#include <queue> // priority_queue
int main()
{
std::priority_queue<int> pq1; // Пустой конструктор очереди pq1
pq1.push(5); //{5} Вставка в очередь значения 5
pq1.push(3); //{3, 5} Вставка в очередь значения 3 Элементы сортируются по возростанию
pq1.push(10); //{3, 5, 10} Вставка в очередь значения 10 Элементы сортируются по возростанию
std::cout << pq1.top() << "\n"; //10 Получить значение верхнего (последнего) элемента, без изменения очереди
std::priority_queue<int> pq2{pq1}; // Конструктор с инициализацией
std::priority_queue<int> pq3(std::move(pq2)); // Конструктор перемещения, теперь q2 пустая очередь
while(!pq3.empty()){
std::cout << pq3.top() << " "; //10 5 3
pq3.pop(); // Удаляем верхний элемент (уменьшаем очередь на 1)
}
}