Ich suche nach einer Datenstruktur, die sein ältestes / letztes Element herausdrückt, wenn ein neues Element eingefügt wird. Stellen Sie beispielsweise D
die Struktur dar. D
Enthält 3 Elemente, werden die Number
D
Standardwerte des Typs auf 1, 2
und initialisiert 3
.
Wenn ein Number
, der den Wert enthält, 5
eingefügt wird D
, 3
wird herausgedrückt, während 1
und 2
nach rechts verschoben werden.
Das erste, was mir einfällt, ist ein Array, aber die Definition beinhaltet nicht das Push-Verhalten.
void push_replace(T val) { pop(); push(val); }
.
T push_replace(T val) { T old = pop(); push(val); return old; }
pop()
aufgrund von Problemen mit dem Stack-Abwickeln im Falle von Ausnahmen, die ein komplexes Objekt auskopieren, nichts zurückgegeben wird. Sie sollten es also front()
vorher verwenden, wenn Sie es vor dem Verwerfen benötigen. Aber sicher, wenn Sie sich nicht für Ausnahmen interessieren, kann Ihr Weg besser sein.