Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef STACK_H_INCLUDED
- #define STACK_H_INCLUDED
- #include <vector>
- using namespace std;
- template<typename T>
- class Stack;
- template<typename T>
- Stack<T> operator+(const Stack<T>& a, const Stack<T>& b);
- template<typename T>
- class Stack
- {
- private:
- friend Stack<T> operator+<>(const Stack<T>& a, const Stack<T>& b);
- vector<T> data;
- public:
- void printAll() { for(int a=0;a<data.size();a++) cout << data[a] << endl; cout << endl;}
- Stack() {}
- bool isEmpty() const { return data.empty(); }
- void push(const T& item) { data.push_back(item); }
- const T& top() const { return data.back(); }
- T& top() { return data.back(); }
- void pop() { data.pop_back(); }
- };
- template<typename T>
- Stack<T> operator+(const Stack<T>& a, const Stack<T>& b)
- {
- Stack<T> c = a;
- for(int k=0;k<b.data.size();k++)
- c.push(b.data[k]);
- return c;
- }
- #endif // STACK_H_INCLUDED
Add Comment
Please, Sign In to add comment