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.
data-structures
arrays
queues
Greg M
la source
la source
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'utiliserfront()
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.Réponses:
Les files d'attente de taille fixe sont souvent implémentées à l'aide de ce que certaines personnes appellent des tampons circulaires . Si vous supprimez la protection contre sa saturation, vous obtenez le comportement souhaité.
Bien sûr, aucune poussée réelle ne se produira dans la baie - ce serait trop cher - mais cela lui ressemblera de l'extérieur.
la source