У меня был быстрый вопрос о стеках, который меня интересовал некоторое время.
Если вы дадите переменным значение, а затем поместите их в стек, будут ли они по-прежнему содержать те же значения после помещения их в стек, или значения станут «обнуляться», и вам придется изменять их в стеке?
Насколько я понимаю, когда вы извлекаете переменную из стека, она вернется к значению, которое было до того, как переменная была нажата, верно? Но сохранит ли переменная свое значение, когда она также будет нажата?
Заранее спасибо!
За сборка: Толкание чего-либо не влияет на оригинал, кроме случаев, когда вы push esp
, так как PUSH
инструкция обычно модифицирует ESP
(или же sp
или же rsp
в зависимости от текущего режима процессора).
Pop перезапишет текущее содержимое регистра / местоположения тем, что в данный момент находится на вершине стека. Это восстановит предыдущее значение, если и только если ваши толчки и нажатия сбалансированы, так что вы
За C ++: Нажатие чего-либо может разрушить оригинал, если вы используете семантику перемещения. Можно перегружать вещи так, что то же самое могло бы случиться иначе, но это, как правило, совершенно нецелесообразно (если не сказать больше).
Popping только удаляет элемент из стека. Вы копируете элемент из верхней части стопки (или коллекции, которую вы можете использовать в виде стека, например, vector
или же deque
), затем отдельно поп, чтобы удалить этот элемент из стека.
Других решений пока нет …