#pragma once #include "stack.hpp" #include #include template Stack::Stack(const uint64_t &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.empty()) { throw std::underflow_error("Tried to pop when stack size is 0"); } _items.pop_back(); } template Item Stack::peek() { if (_items.empty()) { throw std::underflow_error("Tried to peek when stack size is 0"); } return _items.back(); }