#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 <queue> #include <stdexcept> #include <cs35/queue.h> using std::runtime_error; using std::queue; template <typename T> class STLQueue : public Queue<T> { public: void enqueue(T item); T dequeue(); int getSize(); bool isEmpty(); T getFront(); private: queue<T> actualQueue; }; template <typename T> void STLQueue<T>::enqueue(T item) { actualQueue.push(item); } template <typename T> T STLQueue<T>::dequeue() { if (actualQueue.empty()) { throw runtime_error("dequeue: empty queue"); } T value = actualQueue.front(); actualQueue.pop(); return value; } template <typename T> int STLQueue<T>::getSize() { return actualQueue.size(); } template <typename T> bool STLQueue<T>::isEmpty() { return actualQueue.empty(); } template <typename T> T STLQueue<T>::getFront() { if (actualQueue.empty()) { throw runtime_error("getFront: empty queue"); } return actualQueue.front(); }