如何在C ++中没有pop()函数的情况下返回堆栈的第二个元素?

时间:2011-06-04 04:48:22

标签: c++ data-structures stack

我需要帮助返回没有pop()的堆栈的第二个元素?但我不知道如何使用。

我的代码:

stack<int> st;
st.push(10);
st.push(20);
st.top(); // return 20

如何在不使用pop();

的情况下使此函数返回10

感谢。

P.S。对不起我的英文。

4 个答案:

答案 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,如果您希望此类行为使用其他顺序容器,例如vectordeque或{{1 }}

答案 2 :(得分:3)

如果要检索第二个元素,为什么需要stack作为表示?堆栈是一个LIFO表示,所以理论上你不会检索第二个元素,只是添加的最后一个元素。

使用其他表示形式,例如@Naveen提及。

答案 3 :(得分:2)

如果你这样做,根据定义,它将不再是一个堆栈。