Step 3 of 7
deque, the double-ended queue
std::deque supports fast push_back, push_front, pop_back and pop_front, which makes it perfect for queues and sliding windows. (std::vector can only add and remove cheaply at the back. Erasing its front shifts every element.)
std::deque<int> d;
d.push_back(1);
d.push_front(0); // 0 1
d.pop_front(); // 1
std::queue is just a restricted wrapper around a deque.
Your turn: write class MovingAverage that remembers only the last n values added and reports their average.