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

问题描述

| 我需要帮助来返回没有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。     ,        如果这样做,根据定义,它将不再是堆栈。