Я ищу структуру данных, которая вытолкнет его самый старый / последний элемент, если новый элемент будет вставлен. Например, давайте Dпредставим структуру. Dсодержит 3 элемента типа Number Dзначения по умолчанию будут инициализированы в 1, 2и 3.
Если элемент Number, содержащий значение 5, вставлен в D, 3будет вытолкнут, а 1и 2смещены вправо.
Первое, что приходит на ум, это массив, но определение не включает в себя поведение нажатия.
void push_replace(T val) { pop(); push(val); }.
T push_replace(T val) { T old = pop(); push(val); return old; }
pop()ничего не возвращается из-за проблем с размоткой стека в случае исключений, копирующих сложный объект, так что вы должны использовать его front()раньше, если он вам нужен, прежде чем отбрасывать. Но конечно, если вас не волнуют исключения, ваш путь может быть лучше.