std::queue
Определено в заголовочном файле <queue>
|
||
template< class T, |
||
std::queue
это адаптер контейнера, реализующий функционал очереди, то есть структуры данных работающей по принципу FIFO (first in — first out, первым вошёл — первым вышел).
Шаблон класса std::queue
представляет из себя обёртку над базовым контейнером и предоставляет лишь ограниченный набор функций. Очередь кладёт элементы в конец базового контейнера и извлекает элементы из начала.
Содержание |
[править] Параметры шаблона
T | — | Тип хранимых элементов. Поведение неопределено, если T не того же типа, что и Container::value_type .
|
Container | — | Тип базового контейнера для хранения элементов. Контейнер должен соответствовать требованиям SequenceContainer. Кроме того, он должен предоставлять следующие функции с ожидаемой семантикой:
Стандартные контейнеры std::deque и std::list соответствовуют этим требованиям. По умолчанию, если класс контейнера для данного инстанциирования
|
[править] Типы-элементы
Тип элемент | Определение |
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 функция-элемент) | |
(C++23) |
ставляет диапазон элементов в конец (public функция-элемент) |
(C++11) |
создаёт элемент на месте в конце (public функция-элемент) |
удаляет первый элемент (public функция-элемент) | |
(C++11) |
обменивает содержимое (public функция-элемент) |
Объекты элементы | |
Container c |
базовый контейнер (protected объект-элемент) |
[править] Функции, не являющиеся элементами
лексикографически сравнивает значения в queue (шаблон функции) | |
(C++11) |
специализация алгоритма 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&
|
поддерживает |
- ↑ Такие контейнеры, как std::vector<bool> с дополнительной поддержкой
pop_front()
. В разрешении этого DR добавлена поддержка std::vector<bool> для std::stack и std::priority_queue. Изменения, связанные сstd::queue
, предназначены для обеспечения согласованности.
[править] Смотрите также
двусторонняя очередь (шаблон класса) | |
двусвязный список (шаблон класса) |