Je recherche une structure de données qui repoussera son élément le plus ancien / le dernier si un nouvel élément est inséré. Par exemple, D
représentons la structure. D
contient 3 éléments des Number
D
valeurs par défaut du type seront initialisés à 1, 2
et 3
.
Si un Number
contenant la valeur 5
est inséré dans D
, 3
sera poussé vers l'extérieur, tandis que 1
et 2
seront décalés vers la droite.
La première chose qui vient à l'esprit serait un tableau, mais la définition n'inclut pas le comportement de poussée.
void push_replace(T val) { pop(); push(val); }
.
T push_replace(T val) { T old = pop(); push(val); return old; }
pop()
ne retourne rien en raison de problèmes avec le déroulement de la pile en cas d'exceptions copiant un objet complexe, vous êtes donc censé l'utiliser front()
avant si vous en avez besoin avant de le jeter. Mais bien sûr, si vous ne vous souciez pas des exceptions, votre chemin peut être meilleur.