Пространства имён
Варианты
Действия

std::stack

Материал из cppreference.com
< cpp‎ | container
 
 
 
 
Определено в заголовочном файле <stack>
template<

    class T,
    class Container =std::deque<T>

>class stack;

Класс std::stack это адаптер контейнера, предоставляющий программисту функциональные возможности стека, в частности, структуру данных LIFO (последним пришел, первым ушёл - last-in, first-out).

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

Содержание

[править]Параметры шаблона

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

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


[править]Типы-элементы

Тип элемент Определение
container_typeContainer[править]
value_typeContainer::value_type[править]
size_typeContainer::size_type[править]
referenceContainer::reference[править]
const_referenceContainer::const_reference[править]

[править]Функции-элементы

создаёт stack
(public функция-элемент)[править]
уничтожает stack
(public функция-элемент)[править]
присваивает значения адаптеру контейнера
(public функция-элемент)[править]
Доступ к элементам
предоставляет доступ к элементу на вершине
(public функция-элемент)[править]
Ёмкость
проверяет, пуст ли базовый контейнер
(public функция-элемент)[править]
возвращает количество элементов
(public функция-элемент)[править]
Модификаторы
вставляет элемент на вершину
(public функция-элемент)[править]
(C++23)
вставляет диапазон элементов сверху
(public функция-элемент)[править]
(C++11)
создаёт элемент на месте сверху
(public функция-элемент)[править]
удаляет элемент с вершины
(public функция-элемент)[править]
(C++11)
обменивает содержимое
(public функция-элемент)[править]

Объекты элементы

Container c
базовый контейнер
(protected объект-элемент)[править]

[править]Функции, не являющиеся элементами

лексикографически сравнивает значения в stack
(шаблон функции)[править]
специализация алгоритма std::swap
(шаблон функции)[править]

[править]Вспомогательные классы

специализирует свойство типа std::uses_allocator
(специализация шаблона класса)[править]

Принципы вывода

(начиная с C++17)

[править]Примечание

Макрос тест функциональностиЗначениеСтандартКомментарий
__cpp_lib_containers_ranges202202L(C++23)Создание и вставка диапазонов для контейнеров

[править]Пример

[править]Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 307 C++98 Container не может быть std::vector<bool> позволено

[править]Смотрите также

динамический непрерывный массив
(шаблон класса)[править]
компактный динамический битовый набор
(специализация шаблона класса)[править]
двусторонняя очередь
(шаблон класса)[править]
двусвязный список
(шаблон класса)[править]
close