Я ищу структуру данных, которая вытолкнет его самый старый / последний элемент, если новый элемент будет вставлен. Например, давайте 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()
раньше, если он вам нужен, прежде чем отбрасывать. Но конечно, если вас не волнуют исключения, ваш путь может быть лучше.