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.
data-structures
arrays
queues
Greg M
fuente
fuente
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 usarlofront()
antes si lo necesita antes de descartarlo. Pero claro, si no te importan las excepciones, tu camino puede ser mejor.Respuestas:
Las colas de tamaño fijo a menudo se implementan utilizando lo que algunas personas llaman memorias intermedias circulares . Si elimina la protección contra que esté llena, obtendrá el comportamiento deseado.
Por supuesto, no ocurrirá ningún empuje real en la matriz, que sería demasiado costoso, pero se verá desde afuera.
fuente