#pragma once
/* Copyright (c) 2018
Swarthmore College Computer Science Department, Swarthmore PA
A. Danner, M. Gagne, J. Brody, Z. Palmer, A. Soni, L. Meeden
Distributed as course material for Spring 2018
CPSC 035: Data Structures and Algorithms
*/
#include <stack>
#include <stdexcept>
#include <cs35/stack.h>
using std::runtime_error;
using std::stack;
template <typename T>
class STLStack : public Stack<T> {
public:
void push(T item);
T pop();
int getSize();
bool isEmpty();
T getTop();
private:
stack<T> actualStack;
};
template <typename T>
void STLStack<T>::push(T item) {
actualStack.push(item);
}
template <typename T>
T STLStack<T>::pop() {
if (actualStack.empty()) {
throw runtime_error("pop: empty stack");
}
T value = actualStack.top();
actualStack.pop();
return value;
}
template <typename T>
int STLStack<T>::getSize() {
return actualStack.size();
}
template <typename T>
bool STLStack<T>::isEmpty() {
return actualStack.empty();
}
template <typename T>
T STLStack<T>::getTop() {
if (actualStack.empty()) {
throw runtime_error("getTop: empty stack");
}
return actualStack.top();
}