diff options
Diffstat (limited to 'src/stack.tpp')
-rw-r--r-- | src/stack.tpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/stack.tpp b/src/stack.tpp new file mode 100644 index 0000000..958d6ca --- /dev/null +++ b/src/stack.tpp @@ -0,0 +1,36 @@ +#include "stack.hpp" +#include <iostream> +#include <stdexcept> + +template <typename Item> +Stack<Item>::Stack(int capacity) +{ + _items.reserve(capacity); +} + +template <typename Item> +void Stack<Item>::push(Item item) +{ + if (_items.size() == _items.capacity()) + throw std::overflow_error("Tried to push when stack is full"); + + _items.push_back(item); +} + +template <typename Item> +void Stack<Item>::pop() +{ + if (_items.size() == 0) + throw std::underflow_error("Tried to pop when stack size is 0"); + + _items.pop_back(); +} + +template <typename Item> +Item Stack<Item>::peek() +{ + if (_items.size() == 0) + throw std::underflow_error("Tried to peek when stack size is 0"); + + return _items.back(); +} |