Estou procurando uma estrutura de dados que irá empurrar seu elemento mais antigo / último se um novo elemento for inserido. Por exemplo, vamos Drepresentar a estrutura. Dcontém 3 elementos dos Number Dvalores padrão do tipo serão inicializados para 1, 2e 3.
Se um Numberque contém o valor 5for inserido D, 3será empurrado para fora, enquanto 1e 2é deslocado para a direita.
A primeira coisa que vem à mente seria uma matriz, mas a definição não inclui o comportamento de empurrar.
void push_replace(T val) { pop(); push(val); }.
T push_replace(T val) { T old = pop(); push(val); return old; }
pop()não retorna nada devido a problemas com o desenrolamento da pilha, no caso de exceções ao copiar um objeto complexo, então você deve usá-lo front()antes, se precisar antes de descartar. Mas claro, se você não se importa com exceções, seu caminho pode ser melhor.