我想将内容从堆栈收件箱移至发件箱,然后返回发件箱的顶部。但是pop的返回类型为void,因此代码引发错误,即:void值不应被忽略。
值如何移动?
这是代码:
template <class E>
class Queue
{
private:
stack<E> inbox;
stack<E> outbox;
public:
void enqueue(E item) {
inbox.push(item);
}
E dequeue() {
if (outbox.empty()) {
while (!inbox.empty()) {
outbox.push(inbox.pop());
}
}
return outbox.pop();
}
};
最佳答案
stack::top
返回栈顶。 stack::pop
只是删除顶部元素而不返回它。
E dequeue() {
if (outbox.empty()) {
while (!inbox.empty()) {
outbox.push(inbox.top());
inbox.pop();
}
}
E ret = outbox.top();
outbox.pop();
return ret;
}
关于c++ - 如何将内容从一个堆栈移动到另一个堆栈?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17063475/