std::queue — cppreference.com
Материал из cppreference.com
<tbody> </tbody>
| Определено в заголовочном файле |
||
|
|
||
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 объект-элемент) [править] |
Функции, не являющиеся элементами
Вспомогательные классы
Примечание
| Макрос тест функциональности | Значение | Стандарт | Комментарий |
|---|---|---|---|
__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, предназначены для обеспечения согласованности.