C/C++ Arena

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.

Previous: std::array Next: priority_queue and top-k