![](/img/trans.png)
[英]function that returns second element of a stack without altering the stack in C++
[英]How Can I return second element of stack without pop() function in C++?
我需要帮助以返回没有 pop() 的堆栈的第二个元素? 但我不知道我该如何使用。
我的代码:
stack<int> st;
st.push(10);
st.push(20);
st.top(); // return 20
我怎样才能使这个 function 返回 10 而没有 pop();
谢谢。
PS对不起我的英语。
我想您正在尝试模拟基于堆栈的机器?
这是使用 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,如果你想要这样的行为,请使用其他顺序容器,例如vector
、 deque
或list
。
如果要检索第二个元素,为什么需要stack
作为表示? 堆栈是 LIFO 表示,所以理论上你不会检索第二个元素,只是添加的最后一个。
使用其他表示,例如提到的@Naveen。
如果你这样做,根据定义,它将不再是一个堆栈。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.