From 8ceb79db1d0687bba005cef4a77bb889bf7ec3c3 Mon Sep 17 00:00:00 2001 From: HampusM Date: Sun, 9 Jan 2022 21:47:23 +0100 Subject: refactor: rewrite to c++ --- src/stack.tpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/stack.tpp (limited to 'src/stack.tpp') 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 +#include + +template +Stack::Stack(int capacity) +{ + _items.reserve(capacity); +} + +template +void Stack::push(Item item) +{ + if (_items.size() == _items.capacity()) + throw std::overflow_error("Tried to push when stack is full"); + + _items.push_back(item); +} + +template +void Stack::pop() +{ + if (_items.size() == 0) + throw std::underflow_error("Tried to pop when stack size is 0"); + + _items.pop_back(); +} + +template +Item Stack::peek() +{ + if (_items.size() == 0) + throw std::underflow_error("Tried to peek when stack size is 0"); + + return _items.back(); +} -- cgit v1.2.3-18-g5258