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, предназначены для обеспечения согласованности.
[править] Смотрите также
| двусторонняя очередь (шаблон класса) | |
| двусвязный список (шаблон класса) |

