如何将内容从一个堆栈移动到另一个堆栈

How to move contents from one stack to another?

本文关键字:堆栈 一个 移动 另一个      更新时间:2023-10-16

我想将内容从堆栈收件箱移动到发件箱,然后返回发件箱的顶部。但是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::topstack::pop只删除顶部元素而不返回

E dequeue() {
    if (outbox.empty()) {
        while (!inbox.empty()) {
            outbox.push(inbox.top());
            inbox.pop();
        }
    }
    E ret = outbox.top();
    outbox.pop();
    return ret;
}

您可以使用top()访问最后一个元素,然后使用pop()将其从堆栈中删除。

inbox.pop只是简单地从堆栈中移除顶部元素。inbox.top返回顶部元素,之后您可以使用inbox.pop删除它。