Advertisement
AlexDanilin

Урок 2: Стек 2.1

Jul 20th, 2023
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. //Урок 2: Стек 2.1
  2. #include <iostream>
  3. #include <vector>
  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.         // напишите реализацию
  20.         elements_.push_back(element);
  21.     }
  22.     void Pop() {
  23.         // напишите реализацию
  24.         elements_.pop_back();
  25.     }
  26.     const Type& Peek() const {
  27.         // напишите реализацию
  28.         return elements_.back();
  29.     }
  30.     Type& Peek() {
  31.         // напишите реализацию
  32.         return elements_.back();
  33.     }
  34.     void Print() const {
  35.         // напишите реализацию
  36.         PrintRange(begin(elements_),end(elements_));
  37.     }
  38.     uint64_t Size() const {
  39.         // напишите реализацию
  40.         return elements_.size();
  41.     }
  42.     bool IsEmpty() const {
  43.         // напишите реализацию
  44.         return elements_.empty();
  45.     }
  46.  
  47. private:
  48.     vector<Type> elements_;
  49. };
  50.  
  51.  
  52. int main() {
  53.     Stack<int> stack;
  54.     for (uint32_t i = 0; i < 10; ++i) {
  55.         stack.Push(i);
  56.         stack.Print();
  57.     }
  58.     while (!stack.IsEmpty()) {
  59.         stack.Pop();
  60.         stack.Print();
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement