- Контейнер 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) | Конструктор очереди из списка инициализации. | queueO(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)
}
}