我想将内容从堆栈收件箱移至发件箱,然后返回发件箱的顶部。但是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/

10-11 16:20