Estoy buscando una estructura de datos que empuje su elemento más antiguo / último si se inserta un nuevo elemento. Por ejemplo, vamos a D
representar la estructura. D
contiene 3 elementos de los Number
D
valores predeterminados del tipo que se inicializarán en 1, 2
y 3
.
Si se inserta un elemento Number
que contiene el valor , se expulsará y se desplazará hacia la derecha.5
D
3
1
2
Lo primero que viene a la mente sería una matriz, pero la definición no incluye el comportamiento de empuje.
void push_replace(T val) { pop(); push(val); }
.
T push_replace(T val) { T old = pop(); push(val); return old; }
pop()
no devuelve nada debido a problemas con el desbobinado de la pila en caso de excepciones que copian un objeto complejo, por lo que se supone que debe usarlo front()
antes si lo necesita antes de descartarlo. Pero claro, si no te importan las excepciones, tu camino puede ser mejor.