--- title: stack localeTitle: стек --- ## Стеки `stack` является одним из наиболее используемых контейнеров в C ++. Контейнер представляет собой структуру данных, которая хранит коллекцию объектов, некоторые по порядку, некоторые - нет. Все контейнеры имеют другой набор функций, которые позволяют вам получить доступ к объекту (объектам) в этой коллекции. `std::stack` является частью стандартной библиотеки C ++ (отсюда и префикс `std::` и позволяет хранить данные в порядке последнего в первом выводе (LIFO). ПРИМЕЧАНИЕ. **Все объекты в стеке должны быть одного типа данных** Тип данных, который вы храните в стеке, находится в угловых скобках рядом с ключевым словом стека. Например, если вы хотите сохранить коллекцию целых чисел, стек будет `std::stack stack_name` ### Стек LIFO Пояснение `stack` позволяет нам толкнуть и поп в определенном порядке. **Push** означает, что объект находится в верхней части стека. **Pop** означает вытащить последний вставленный объект из верхней части стека. Поэтому, когда вы нажимаете его вверху, и когда вы поп вы извлекаете последний вставленный элемент. ![alt text](https://github.com/mohammadaziz313/helloworld/blob/master/Lifo_stack.png "Пример LIFO Stack Push и Pop") ### Операции с стеками Контейнер стека поддерживает следующие операции: * От себя * поп * пустой * размер * назад #### От себя Позволяет вставить новый элемент в верхней части стека, над текущим верхним элементом. ```cpp //Push operation in Stack #include // std::cout #include // std::stack int main () { std::stack s; s.push(1); //Pushing 1 at top of the stack s.push(2); //Pushing 2 at top of the stack return 0; } ``` #### верхний Позволяет получить доступ к верхнему элементу, не удаляя его из вашего стека. ```cpp //Top operation in Stack #include // std::cout #include // std::stack int main () { std::stack s; s.push(1); //Pushing 1 at top of the stack s.push(2); //Pushing 2 at top of the stack std::cout< // std::cout #include // std::stack int main () { std::stack s; s.push(1); //Pushing 1 at top of the stack s.push(2); //Pushing 2 at top of the stack std::cout< // std::cout #include // std::stack int main () { std::stack s; s.push(1); //Pushing 1 at top of the stack s.push(2); //Pushing 2 at top of the stack std::cout< // std::cout #include // std::stack int main () { std::stack s; s.push(1); s.push(2); while(s.empty() != false){ std::cout<