View difference between Paste ID: BeYDuay9 and AiJ95ji8
SHOW: | | - or go back to the newest paste.
1
#include <iostream>
2
#include <vector>
3
4
using namespace std;
5
6
template <typename It>
7
void PrintRange(It range_begin, It range_end) {
8
    for (auto it = range_begin; it != range_end; ++it) {
9
        cout << *it << " "s;
10
    }
11
    cout << endl;
12
}
13
14
template <typename Type>
15
class Stack {
16
public:
17
    void Push(const Type& element) {
18
        elements_.push_back(element);
19
    }
20
    void Pop() {
21
        elements_.pop_back();
22
    }
23
    const Type& Peek() const {
24
        return elements_.back();
25
    }
26
    Type& Peek() {
27
        return elements_.back();
28
    }
29
    void Print() const {
30
        PrintRange(begin(elements_),end(elements_));
31
    }
32
    uint64_t Size() const {
33
        return elements_.size();
34
    }
35
    bool IsEmpty() const {
36
        return elements_.empty();
37
    }
38
39
private:
40
    vector<Type> elements_;
41
};
42
int main() {
43
    Stack<int> stack;
44
    for (uint32_t i = 0; i < 10; ++i) {
45
        stack.Push(i);
46
        stack.Print();
47
    }
48
    while (!stack.IsEmpty()) {
49
        stack.Pop();
50
        stack.Print();
51
    }
52
}