#ifndef __QUEUE_AMV #define __QUEUE_AMV #include "deque.h" namespace amv { template <class type, class C=deque<type> > class queue { protected: C cnt; public: typedef C::value_type value_type; typedef C::size_type size_type; typedef C container_type; explicit queue(const C &c=C()); bool empty() const; size_type size() const; value_type &front(); const value_type &front() const; value_type &back(); const value_type &back() const; void push(const value_type &newObject); void pop(); }; template <class type, class C> inline queue<type,C>::queue(const C &c): cnt(c) { } template <class type, class C> inline bool queue<type,C>::empty() const { return cnt.empty(); } template <class type, class C> inline queue<type,C>::size_type queue<type,C>::size() const { return cnt.size(); } template <class type, class C> inline queue<type,C>::value_type &queue<type,C>::front() { return cnt.front(); } template <class type, class C> inline const queue<type,C>::value_type &queue<type,C>::front() const { return cnt.front(); } template <class type, class C> inline queue<type,C>::value_type &queue<type,C>::back() { return cnt.back(); } template <class type, class C> inline const queue<type,C>::value_type &queue<type,C>::back() const { return cnt.back(); } template <class type, class C> inline void queue<type,C>::push(const value_type &newObject) { cnt.push_back(newObject); } template <class type, class C> inline void queue<type,C>::pop() { cnt.pop_front(); } } #endif