I need help for return second element of stack without pop() ? but I don't know how can I use.
my code :
stack<int> st;
st.push(10);
st.push(20);
st.top(); // return 20
开发者_如何学PythonHow do can I make this function is return 10 without pop();
Thanks.
P.S. sorry for my English.
I presume you're trying to emulate a stack-based machine?
Here's the only way to do it with 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);
If you want other behavior you'll have to do your own implementation of stack
that has more capabilities.
You can not do that with stack
, as it is supposed to be LIFO, if you want such a behavior use other sequential containers such as vector
, deque
or list
.
If you want to retrieve the second element, why do you need stack
as representation? The stack is a LIFO representation, so theoretically you don't retrieve second element, just the last one added.
Use other representation, such as @Naveen mentioned.
If you do that, it will no longer be a stack, by definition.
精彩评论