Spec-Zone.ru › C++

std::stack

Определено в заголовке <stack>
template<
    class T,
    class Container = std::deque<T>
> class stack;

Класс std::stack — это адаптер контейнера, предоставляющий программисту функциональность стека — конкретно, структуру данных LIFO (последним вошел, первым вышел).

Шаблон класса выступает в качестве обертки над базовым контейнером — предоставляется только определённый набор функций. Стек помещает и извлекает элементы с задней части базового контейнера, известной как вершина стека.

Параметры шаблона

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

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

Типы-члены

Тип-член Определение
container_type Container
value_type Container::value_type
size_type Container::size_type
reference Container::reference
const_reference Container::const_reference

Объекты-члены

Имя члена Определение
Container c
базовый контейнер
(защищённый объект-член)

Члены-функции

(конструктор)
создаёт стек
(открытая функция-член)
(деструктор)
уничтожает стек
(открытая функция-член)
operator=
присваивает значения адаптеру контейнера
(открытая функция-член)
Доступ к элементам
top
обращается к верхнему элементу
(открытая функция-член)
Ёмкость
empty
проверяет, пуст ли адаптер контейнера
(открытая функция-член)
size
возвращает количество элементов
(открытая функция-член)
Модификаторы
push
вставляет элемент вверху
(открытая функция-член)
push_range
(C++23)
вставляет диапазон элементов вверху
(открытая функция-член)
emplace
(C++11)
создаёт элемент на месте вверху
(открытая функция-член)
pop
удаляет верхний элемент
(открытая функция-член)
swap
(C++11)
меняет содержимое
(открытая функция-член)

Функции вне класса

operator==operator!=operator<operator<=operator>operator>=operator<=>
(C++20)
лексически сравнивает значения двух стеков
(функция-шаблон)
std::swap(std::stack)
(C++11)
специализация алгоритма std::swap
(функция-шаблон)

Вспомогательные классы

std::uses_allocator<std::stack>
(C++11)
специализация типа-трейта std::uses_allocator
(специализация шаблона класса)

Руководства по выводу типов

(с C++17)

Примечания

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

Пример

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющих поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применён к Поведение, как опубликовано Правильное поведение
LWG 307 C++98 Container не мог быть std::vector<bool> разрешено

См. также

vector
динамический смежный массив
(шаблон класса)
vector<bool>
экономичный динамический битовый массив
(специализация шаблона класса)
deque
двунаправенный очередь
(шаблон класса)
list
двусвязный список
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/stack

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API