Sto cercando una struttura di dati che spingerà fuori il suo elemento più vecchio / ultimo se viene inserito un nuovo elemento. Ad esempio, lascia che D
rappresenti la struttura. D
contiene 3 elementi dei Number
D
valori predefiniti del tipo che verranno inizializzati su 1, 2
e 3
.
Se viene inserito un Number
valore che contiene il valore , verrà rimosso, mentre e spostato a destra.5
D
3
1
2
La prima cosa che viene in mente sarebbe una matrice, ma la definizione non include il comportamento di spinta.
void push_replace(T val) { pop(); push(val); }
.
T push_replace(T val) { T old = pop(); push(val); return old; }
pop()
non restituisce nulla a causa di problemi con lo svolgimento dello stack in caso di eccezioni nella copia di un oggetto complesso, quindi dovresti usare front()
prima se ne hai bisogno prima di scartarlo. Ma certo, se non ti interessano le eccezioni, la tua strada può essere migliore.