# Is there an existing data structure that is of fixed size, and will push the oldest/last element out if a new element is inserted?

I'm looking for a data structure that will push its oldest/last element out if a new element is inserted. For example, let D represent the structure. D contains 3 elements of the type Number D's default values will be initialized to 1, 2 and 3.

$$D = [1, 2, 3]$$

If a Number that contains the value 5 is inserted into D, 3 will be pushed out, while 1 and 2 are shifted right.

$$D = [5, 1, 2]$$

The first thing that comes to mind would be an array, but the definition does not include the pushing behavior.

• Well there is no in-built data structure but it is simple to implement using a Doubly linked list linked list right? Jul 12 '17 at 4:53
• What about using a wrapper inheriting from a queue? Then you add the method void push_replace(T val) { pop(); push(val); }. Jul 12 '17 at 12:05
• @FrancescoDondi should probably be T push_replace(T val) { T old = pop(); push(val); return old; } Jul 12 '17 at 18:52
• There definitely is now: you just informally defined it; perhaps you should ask if it is well-known, has a generally agreed interface and whether implementations are available (not that the last is a great issue). Jul 12 '17 at 21:41
• @valbaca I'm thinking of C++ where pop() returns nothing due to problems with stack unwinding in case of exceptions copying out a complex object, so you're supposed to use front() before if you need it before discarding. But sure, if you don't care about exceptions your way can be better. Jul 13 '17 at 8:06