c++ - 同样的表达方式却不同的结果

标签 c++

所以我在leetcode上做一道题。它是使用队列实现堆栈。 如果我在下面提交此代码。它被接受。

class Stack {
    public:
    queue<int> que;
    // Push element x onto stack.
    void push(int x) {
        que.push(x);
        for(int i=0;i<que.size()-1;i++){
            que.push(que.front());
            que.pop();
        }
    }

    // Removes the element on top of the stack.
    void pop() {
        que.pop();
    }

    // Get the top element.
    int top() {
        return que.front();
    }

    // Return whether the stack is empty.
    bool empty() {
        return que.empty();
    }
};

但如果我只改变 for(int i=0;i<que.size()-1;++i)for(int i=0;i<=que.size()-2;i++) ,我超出了时间限制。最后执行的输入:push(1),empty()。有人能告诉我为什么吗???谢谢

最佳答案

queue::size() 返回一个 size_t,它基本上是一个无符号数。和一个负无符号数转换为一个巨大的数字。

所以 queue::size()-1 --> 巨大的数字 (0xFFFFFFFF)

关于c++ - 同样的表达方式却不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34317205/

相关文章:

c++ - 创建动态二维数组

c++ - Makefile:将库添加到另一个项目

c++ - `POLLOUT` Linux函数中的 `poll`事件是什么意思?

c++ - opencv 是否实现图像的就地旋转或转置?

c++ - 虚拟赋值运算符 C++

c++ - 如何编写将二进制数转换为十进制数的递归函数?

c++ - Clang 格式并不总是遵守 BinPackParameters : false

c++ - 如何使用 gtest 设置测试名称

c# - protobuf-net 缺少可选字段的 has_ 函数?

c++ - 你如何在Windows中定义一 block 可执行内存?