Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将内容从一个堆栈移动到另一个堆栈?_C++ - Fatal编程技术网

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

C++ 如何将内容从一个堆栈移动到另一个堆栈?,c++,C++,我想将堆栈收件箱中的内容移动到发件箱,然后返回发件箱顶部。但是pop的返回类型是void,因此代码会抛出一个错误,说明:void值不会被忽略,因为它应该被忽略 如何移动这些值 代码如下: template <class E> class Queue { private: stack<E> inbox; stack<E> outbox; public: void enqueue(E item) {

我想将堆栈收件箱中的内容移动到发件箱,然后返回发件箱顶部。但是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();
    }

};
模板
类队列
{
私人:
堆叠收件箱;
堆栈输出框;
公众:
无效排队(E项){
收件箱。推送(项目);
}
E出列(){
if(outbox.empty()){
而(!inbox.empty()){
outbox.push(inbox.pop());
}
}
返回outbox.pop();
}
};

您可以使用
top()
访问最后一个元素,然后使用
pop()
将其从堆栈中移除。请参阅以获得良好的参考。

您可以使用
top()
访问最后一个元素,然后使用
pop()
将其从堆栈中删除。请参阅以获取良好的参考。

返回堆栈顶部的是
stack::top
<代码>堆栈::pop只删除顶部元素而不返回它

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

返回堆栈顶部的是
stack::top
<代码>堆栈::pop只删除顶部元素而不返回它

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

inbox.pop
只需从堆栈中删除顶部元素。
inbox.top
返回top元素,然后可以使用
inbox.pop
将其删除。

inbox.pop
只需从堆栈中删除top元素即可。
inbox.top
返回top元素,之后可以使用
inbox.pop
删除它。

查看您将找到的。如果您正在谈论标准库,为什么不看看堆栈api?Pop不用于返回一个对象,它只是删除了最上面的对象。看看你会找到的。如果你说的是标准库,为什么不看看堆栈api呢?Pop不用于返回对象,它只是删除顶部对象。作为参考,在对解决方案Pop方法的评论中,显示了以这种方式设计接口的原因。虽然它很旧,所以也许不要把其余的当作福音。作为参考,在对解决方案pop方法的评论中,展示了以这种方式设计接口的原因。虽然它很古老,所以也许不要把其余的当作福音。