问题描述
|
我需要帮助来返回没有pop()的堆栈的第二个元素?但我不知道该怎么用。
我的代码:
stack<int> st;
st.push(10);
st.push(20);
st.top(); // return 20
我该如何使该函数返回10而没有pop();
谢谢。
附言对不起我的英语不好。
解决方法
我想您正在尝试模拟基于堆栈的计算机?
这是使用std :: stack的唯一方法:
stack<int> st;
st.push(10);
st.push(20);
int top = st.top(); // return 20
st.pop();
int second = st.top(); // return 10
st.push(top);
如果您想要其他行为,则必须自己执行具有更多功能的stack
。
, 您不能使用stack
(因为它应该是LIFO)来执行此操作,如果您想要这种行为,请使用use4 sequential,deque
或list
之类的其他顺序容器。
, 如果要检索第二个元素,为什么需要stack
作为表示?堆栈是LIFO表示形式,因此从理论上讲,您不会检索第二个元素,而只会检索添加的最后一个元素。
使用其他表示形式,例如提到的@Naveen。
, 如果这样做,根据定义,它将不再是堆栈。