Advertisement
chevengur

СПРИНТ № 5 | Стек, очередь, дек | Урок 2: Стек 1/3

Feb 11th, 2024
1,143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. template <typename It>
  8. void PrintRange(It range_begin, It range_end) {
  9.     for (auto it = range_begin; it != range_end; ++it) {
  10.         cout << *it << " "s;
  11.     }
  12.     cout << endl;
  13. }
  14.  
  15. template <typename Type>
  16. class Stack {
  17. public:
  18.     void Push(const Type& element) {
  19.         elements_.push_back(element);
  20.     }
  21.     void Pop() {
  22.         elements_.pop_back();
  23.     }
  24.     const Type& Peek() const {
  25.         return elements_.back();
  26.     }
  27.     Type& Peek() {
  28.         return elements_.back();
  29.     }
  30.     void Print() const {
  31.         PrintRange(elements_.begin(), elements_.end());
  32.     }
  33.     uint64_t Size() const {
  34.         return elements_.size();
  35.     }
  36.     bool IsEmpty() const {
  37.         return elements_.empty();
  38.     }
  39.  
  40. private:
  41.     vector<Type> elements_;
  42. };
  43.  
  44.  
  45. int main() {
  46.     Stack<int> stack;
  47.     for (uint32_t i = 0; i < 10; ++i) {
  48.         stack.Push(i);
  49.         stack.Print();
  50.     }
  51.     while (!stack.IsEmpty()) {
  52.         stack.Pop();
  53.         stack.Print();
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement