Пространства имён
Варианты
Действия

std::queue

Материал из cppreference.com
< cpp‎ | container
 
 
 
 
Определено в заголовочном файле <queue>
template<

    class T,
    class Container = std::deque<T>

> class queue;

std::queue это адаптер контейнера, реализующий функционал очереди, то есть структуры данных работающей по принципу FIFO (first in — first out, первым вошёл — первым вышел).

Шаблон класса std::queue представляет из себя обёртку над базовым контейнером и предоставляет лишь ограниченный набор функций. Очередь кладёт элементы в конец базового контейнера и извлекает элементы из начала.

Содержание

[править] Параметры шаблона

T Тип хранимых элементов. Поведение неопределено, если T не того же типа, что и Container::value_type.
Container Тип базового контейнера для хранения элементов. Контейнер должен соответствовать требованиям SequenceContainer. Кроме того, он должен предоставлять следующие функции с ожидаемой семантикой:
  • back()
  • front()
  • push_back()
  • pop_front()

Стандартные контейнеры std::deque и std::list соответствовуют этим требованиям. По умолчанию, если класс контейнера для данного инстанциирования std::queue не указан, используется стандартный контейнер std::deque.


[править] Типы-элементы

Тип элемент Определение
container_type Container [править]
value_type Container::value_type [править]
size_type Container::size_type [править]
reference Container::reference [править]
const_reference Container::const_reference [править]

[править] Функции-элементы

создаёт queue
(public функция-элемент) [править]
уничтожает queue
(public функция-элемент) [править]
присваивает значения адаптеру контейнера
(public функция-элемент) [править]
Доступ к элементам
предоставляет доступ к первому элементу
(public функция-элемент) [править]
предоставляет доступ к последнему элементу
(public функция-элемент) [править]
Ёмкость
проверяет, пуст ли базовый контейнер
(public функция-элемент) [править]
возвращает количество элементов
(public функция-элемент) [править]
Модификаторы
вставляет элемент в конец
(public функция-элемент) [править]
ставляет диапазон элементов в конец
(public функция-элемент) [править]
(C++11)
создаёт элемент на месте в конце
(public функция-элемент) [править]
удаляет первый элемент
(public функция-элемент) [править]
(C++11)
обменивает содержимое
(public функция-элемент) [править]

Объекты элементы

Container c
базовый контейнер
(protected объект-элемент) [править]

[править] Функции, не являющиеся элементами

лексикографически сравнивает значения в queue
(шаблон функции) [править]
специализация алгоритма std::swap
(шаблон функции) [править]

[править] Вспомогательные классы

специализирует свойство типа std::uses_allocator
(специализация шаблона класса) [править]

Принципы вывода

(начиная с C++17)

[править] Примечание

Макрос тест функциональности Значение Стандарт Комментарий
__cpp_lib_containers_ranges 202202L (C++23) Создание и вставка диапазовнов для контейнеров

[править] Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 307 C++98 std::queue не поддерживал контейнеры, использующие ссылочные
прокси типы[1] вместо (const) value_type&
поддерживает
  1. Такие контейнеры, как std::vector<bool> с дополнительной поддержкой pop_front(). В разрешении этого DR добавлена поддержка std::vector<bool> для std::stack и std::priority_queue. Изменения, связанные с std::queue, предназначены для обеспечения согласованности.

[править] Смотрите также

двусторонняя очередь
(шаблон класса) [править]
двусвязный список
(шаблон класса) [править]