c++ - 尝试使用堆栈创建队列。为什么我会收到 void 到 int 转换错误?

标签 c++ stack queue

这是我第一次尝试使用两个堆栈创建队列。我不确定我是否走在正确的轨道上,因为由于 '=': 无法从 'void' 转换为 'int' 错误,我无法检查我的工作。错误出现在这一行:x = enQ.pop();。 enQ 不是函数,怎么可能是 void?


当然,我的代码还没有完成。

stack<int> enQ;
stack<int> deQ;

void enQueue(int x) {
    enQ.push(x);
    cout << x << " has been added to the queue." << endl;
}

void deQueue() {
    while (enQ.size() != 0) {
        int x;
        x = enQ.pop();
        enQ.pop();
        deQ.push(x);
        cout << x << " had been pushed to DEQUEUE" << endl;
    }
}

最佳答案

因为函数 std::stack::pop不返回任何内容(即其返回类型为 void)。

你可以改变

x = enQ.pop();

x = enQ.top();
enQ.pop();

关于c++ - 尝试使用堆栈创建队列。为什么我会收到 void 到 int 转换错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42357254/

相关文章:

c - C栈数组实现

php - ZF2、Oracle、SlmQueueDoctrine、ClearObjectManagerStrategy 不工作

php - 在所有作业完成后轮询 Laravel 队列

c - 为什么我插入队列的数据没有从另一端出来?

c++ - 将标志整数转换为人类可读的字符串

c++ - 为什么AIO优于select和多线程IO处理?

c++ - 在 C++ 中使用堆栈计算后缀表达式

c++ - 如何按降序和第二个元素对 vector 对进行排序?

c++ - 同一 boost tcp 套接字对象上的多个连接

python - 程序中的子程序和子程序是什么?