C++ 如何将内容从一个堆栈移动到另一个堆栈?
我想将堆栈收件箱中的内容移动到发件箱,然后返回发件箱顶部。但是pop的返回类型是void,因此代码会抛出一个错误,说明:void值不会被忽略,因为它应该被忽略 如何移动这些值 代码如下:C++ 如何将内容从一个堆栈移动到另一个堆栈?,c++,C++,我想将堆栈收件箱中的内容移动到发件箱,然后返回发件箱顶部。但是pop的返回类型是void,因此代码会抛出一个错误,说明:void值不会被忽略,因为它应该被忽略 如何移动这些值 代码如下: template <class E> class Queue { private: stack<E> inbox; stack<E> outbox; public: void enqueue(E item) {
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方法的评论中,展示了以这种方式设计接口的原因。虽然它很古老,所以也许不要把其余的当作福音。