#ifndef MT1Q4_H #define MT1Q4_H /////////////////////////////////////////////////////////////// // MT1Q4.h - Circular Buffer // // // // Jim Fawcett, CSE687 - Object Oriented Design, Spring 2012 // /////////////////////////////////////////////////////////////// #include template class CircularBuffer { public: typename typedef std::list::iterator iterator; CircularBuffer(size_t N) : _N(N) {} iterator begin() { return buffer.begin(); } iterator end() { return buffer.end(); } size_t size() { return buffer.size(); } void add(const T& t) { buffer.push_front(t); if(buffer.size() > _N) buffer.pop_back(); } // compiler generated destructor, assignment, // and copy are correct private: size_t _N; std::list buffer; }; template void Display(CircularBuffer& buff) { if(buff.size() == 0) return; CircularBuffer::iterator iter = buff.begin(); std::cout << "\n " << *(iter++); while(iter != buff.end()) { std::cout << ", " << *(iter++); } } #endif