繁体   English   中英

如何在 C++ 中返回没有 pop() function 的堆栈的第二个元素?

[英]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,如果你想要这样的行为,请使用其他顺序容器,例如vectordequelist

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

使用其他表示,例如提到的@Naveen。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM