如何将内容从一个堆栈移动到另一个堆栈
How to move contents from one stack to another?
我想将内容从堆栈收件箱移动到发件箱,然后返回发件箱的顶部。但是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;
}
您可以使用top()
访问最后一个元素,然后使用pop()
将其从堆栈中删除。
inbox.pop
只是简单地从堆栈中移除顶部元素。inbox.top
返回顶部元素,之后您可以使用inbox.pop
删除它。
相关文章:
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- 使用一个内存集数组和单个堆栈在 O(n) 中查找数组的下一个更大元素
- 使用 STL 交换堆栈 C++ 中的第一个和最后一个元素
- 使用堆栈查找每个元素的下一个更大的元素
- 如何在 C++03 中没有重复代码的情况下在堆栈上创建一个非常量 C 字符串数组?
- 作者在解释C 中的堆栈和堆时犯了一个错误,或者我正在误读某些内容
- 我如何转换一个基于动态的,基于指针的int堆栈,以便将其打印成字符串
- 当一个类在构造函数处动态分配自己时,为什么会发生堆栈溢出而不是 std::bad_alloc
- 从一个堆栈移动到另一个堆
- 找出堆栈数组中的下一个整数是否相同
- 在堆栈上有一个对象,而不是在函数的整个生命周期内
- 将顶部堆栈元素传输到第二个堆栈的第一个
- GDB正在调试一个缺少特定调用堆栈的符号表的核心转储
- C++为什么创建一个新节点来删除堆栈上的节点是错误的
- OpenCV C++:声明一个新变量会导致堆栈损坏
- 实现一个通用堆栈容器作为适配器类模板
- 如何拥有一个具有多个数据类型的C++堆栈
- 我需要一个像堆栈一样的数据结构,但具有随机访问,但是,我应该实现什么
- 为什么在堆上迭代一个大数组比在堆栈上迭代相同大小的数组快
- 我认为我有一个堆栈溢出(已达到 SDL 表面限制)