Advertisement
VinnRonn

StackMin

Jul 29th, 2022
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <numeric>
  5.  
  6. using namespace std;
  7.  
  8. template <typename It>
  9. void PrintRange(It range_begin, It range_end) {
  10. for (auto it = range_begin; it != range_end; ++it) {
  11. cout << *it << " "s;
  12. }
  13. cout << endl;
  14. }
  15.  
  16. template <typename Type>
  17. class StackMin {
  18. public:
  19.  
  20. void Push(const Type& element) {
  21.  
  22. elements_.push_back(element);
  23. }
  24. void Pop() {
  25.  
  26. elements_.pop_back();
  27. }
  28. const Type& Peek() const {
  29.  
  30. return lements_.back();
  31. }
  32. Type& Peek() {
  33.  
  34. return elements_.back();
  35. }
  36. void Print() const {
  37.  
  38. PrintRange(elements_.begin(), elements_.end());
  39.  
  40. }
  41. uint64_t Size() const {
  42.  
  43. return distance(elements_.begin(), elements_.end());
  44. }
  45. bool IsEmpty() const {
  46. // напишите реализацию
  47. return elements_.begin() == elements_.end();
  48. }
  49. const Type& PeekMin() const {
  50. // напишите реализацию метода
  51. }
  52. Type& PeekMin() {
  53. // напишите реализацию метода
  54. }
  55.  
  56.  
  57.  
  58. private:
  59. vector<Type> elements_;
  60. };
  61.  
  62.  
  63. int main() {
  64. StackMin<int> stack;
  65. vector<int> values(5);
  66.  
  67. // заполняем вектор для тестирования нашего стека
  68. iota(values.begin(), values.end(), 1);
  69. // перемешиваем значения
  70. random_shuffle(values.begin(), values.end());
  71.  
  72. // заполняем стек
  73. for (int i = 0; i < 5; ++i) {
  74. stack.Push(values[i]);
  75. }
  76.  
  77. // печатаем стек и его минимум, постепенно убирая из стека элементы
  78. while (!stack.IsEmpty()) {
  79. stack.Print();
  80. cout << "Минимум = "s << stack.PeekMin() << endl;
  81. stack.Pop();
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement