std::queue
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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. Кроме того, он должен предоставлять следующие функции с ожидаемой семантикой:
Стандартные контейнеры 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, предназначены для обеспечения согласованности.
Смотрите также
| двусторонняя очередь (шаблон класса) | |
| двусвязный список (шаблон класса) |