std::queue C++. Контейнер стандартной библиотеки очередь.

- Контейнер std::queue или очередь, обеспечивает доступ к элементам по принципу FIFO (first in, first out "первый пришел - первый ушел", аналогия с очередью куда-либо), где пришедшие соответствуют записываемым элементам, а ушедшие считываемым.

- Если требуется контейнер обеспечивает доступ к элементам по принципу LIFO (last in, first out "последний пришел - первый ушел") используйте std::stack.

МетодОписаниеПримерСложность
back() Получает верхний (последний добавленный) элемент очереди без ее изменения. auto i = q.back(); O(1)
emplace(Args&&... args) Создает и вставляет элемент в конец очереди. q.emplace(5); O(1)
empty() Возвращает пустая ли очередь. if(q.empty()) O(1)
front() Получает нижний (первый добавленный) элемент очереди без ее изменения. auto i = q.front(); O(1)
pop() Удаляет нижний (первый добавленный) элемент очереди. q.pop(); O(1)
push(const T& val) Вставляет элемент в вершину очереди. q.push(12); O(1)
queue() Конструктор пустой очереди; queue<int> q; O(1)
queue(initializer_list<value_type> il) Конструктор очереди из списка инициализации. queue q({4, 6, 8}); O(n)
queue(const cont_type cn) Конструктор копирования, создает очередь из значений другого контейнера. queue q(ls); O(n)
size() Возвращает количество элементов очереди. size_t sz = q.size(); O(1)
swap(stack& q1) Обменивает содержимое 2х очередей q.swap(q1); O(1)

#include <iostream> // cout
#include <queue>    // queue

int main()
{
    std::queue<int> q1; // Пустой конструктор очереди q1
    q1.push(5); //{5} Вставка в очередь значения 5
    q1.push(3); //{5, 3} Вставка в очередь значения 3
    std::cout << q1.back()  << "\n"; //3 Получить значение последнего элемента, без изменения очереди
    std::cout << q1.front() << "\n"; //5 Получить значение первого элемента, без изменения очереди

    std::queue<int> q2{q1}; // Конструктор с инициализацией

    std::queue<int> q3(std::move(q2));  // Конструктор перемещения, теперь q2 пустая очередь

    while(!q3.empty()){ // Выполняем пока очередь не стала пустой
        std::cout << q3.back() << " ";    //5 3
        q3.pop(); // Выталкиваем значение (уменьшаем очередь на 1)
    }
}
2023-12-15



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

array - статический массив (после создания размер не изменяется). Быстрее вектора.
Выбор контейнера из стандартной библиотеки С++.
deque - двусторонняя очередь (дек). Эффективное вставка-удаление по концам очереди.
forward_list - односвязный список с эффективной вставкой/удалением в начало списка.
list - двусвязный список с эффективной вставкой/удалением в любом месте списка.
map - словарь сортированных уникальных пар ключ-значение.
multimap - словарь сортированных неуникальных пар ключ-значение.
multiset - множество сортированных неуникальных элементов.
priority_queue - очередь с приоритетом (с сортировкой значений).
queue - очередь FIFO first in, first out "первый пришел - первый ушел".
set - множество сортированных уникальных элементов.
stack - стек LIFO last in, first out "последний пришел - первый ушел".
unordered_map - словарь несортированных уникальных пар ключ-значение.
unordered_multimap - словарь несортированных неуникальных пар ключ-значение.
unordered_multiset - множество несортированных неуникальных значений.
unordered_set - множество несортированных уникальных значений.
vector - вектор (массив) значений с изменяемым размером.