Estoy buscando una estructura de datos que empuje su elemento más antiguo / último si se inserta un nuevo elemento. Por ejemplo, vamos a Drepresentar la estructura. Dcontiene 3 elementos de los Number Dvalores predeterminados del tipo que se inicializarán en 1, 2y 3.
Si se inserta un elemento Numberque contiene el valor , se expulsará y se desplazará hacia la derecha.5D312
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