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.
void push_replace(T val) { pop(); push(val); }
. $\endgroup$T push_replace(T val) { T old = pop(); push(val); return old; }
$\endgroup$pop()
returns nothing due to problems with stack unwinding in case of exceptions copying out a complex object, so you're supposed to usefront()
before if you need it before discarding. But sure, if you don't care about exceptions your way can be better. $\endgroup$