我需要帮助返回没有pop()的堆栈的第二个元素?但我不知道如何使用。
我的代码:
stack<int> st;
st.push(10);
st.push(20);
st.top(); // return 20
如何在不使用pop();
的情况下使此函数返回10感谢。
P.S。对不起我的英文。
答案 0 :(得分:5)
我认为你试图模仿基于堆栈的机器?
这是使用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
。
答案 1 :(得分:3)
您不能使用stack
,因为它应该是LIFO,如果您希望此类行为使用其他顺序容器,例如vector
,deque
或{{1 }}
答案 2 :(得分:3)
如果要检索第二个元素,为什么需要stack
作为表示?堆栈是一个LIFO表示,所以理论上你不会检索第二个元素,只是添加的最后一个元素。
使用其他表示形式,例如@Naveen提及。
答案 3 :(得分:2)
如果你这样做,根据定义,它将不再是一个堆栈。