C++ 中的堆栈:如果切换“或”条件,则会出现运行时错误

玛纳斯舒克拉

在 C++ 中使用 Stacks 时,我经常发现这很奇怪,我不确定问题的确切根源是什么。用代码片段更好地解释:(我像往常一样试图获得堆栈的最小值和推/弹出等)

class MinStack {
private:
    stack<int> ans;
    stack<int> min_collector;

public:
    void push(int x) {
        ans.push(x);
        if (min_collector.empty() || getMin()>=x) {
            min_collector.push(x);
        }
    }

    void pop() {
        if (ans.top()==getMin()) {
            min_collector.pop();
        }
        ans.pop();
    }

    int top() {
        return ans.top();
    }

    int getMin() {
        return min_collector.top();
    }

};

上面的代码工作正常。但是,在 push(int x) 函数中,如果我像这样编辑“if”条件:

(getMin()>=x  || min_collector.empty())

我收到运行时错误,有没有其他人遇到过这个问题?为什么“或”条件下的顺序很重要?

分机3小时

这些条件从左到右进行评估,一旦第一个术语返回,执行就会中止true

&&一旦第一项返回,逻辑执行就会中止false

您会收到运行时错误,因为top()在堆栈为空时尝试访问堆栈元素是非法的 - 没有顶部元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#在运行时切换枚举

来自分类Dev

在C ++中的<<和>>之间运行时切换

来自分类Dev

在 C 中访问越界数组不会出现运行时错误

来自分类Dev

(在C中)使用数组实现堆栈-将数组大小加倍时出现运行时错误

来自分类Dev

堆栈溢出运行时错误C ++

来自分类Dev

C中的运行时错误(CodeChef)

来自分类Dev

C ++中运行时的分段错误

来自分类Dev

C中奇怪的运行时错误?

来自分类Dev

C ++中的运行时错误

来自分类Dev

C ++代码中的运行时错误

来自分类Dev

代码C ++中的运行时错误

来自分类Dev

如果将C函数放在单独的文件中,则会出现减速问题?

来自分类Dev

C-释放Malloc。运行时出现错误

来自分类Dev

C:运行时出现“访问冲突”错误

来自分类Dev

反转C中的链接列表时出现运行时错误

来自分类Dev

C#后台线程在UserControl中运行时出现错误

来自分类Dev

C ++调用getenv(“ LINES”)或getenv(“ COLUMNS”)在Xcode中运行良好,在终端中运行时出现段错误

来自分类Dev

C中结构的运行时条件字段

来自分类Dev

如果我在C#的文本框中以小数点开始输入,则会出现输入格式异常

来自分类Dev

分析时间时C ++中的运行时错误

来自分类Dev

循环和运行时错误中的C ++变量声明

来自分类Dev

C ++中动态内存分配的运行时错误

来自分类Dev

C ++中的指针和运行时错误

来自分类Dev

使用C在Spoj中运行时NZEC错误

来自分类Dev

为什么 bfs c ++ 中的运行时错误

来自分类Dev

C++ 工厂模式中的运行时错误

来自分类Dev

尝试在C语言中通过结构实现堆栈,但以下代码出现运行时错误。谁能解释和指出出了什么问题?

来自分类Dev

尝试在C#中的类中向列表属性添加项目时出现运行时错误

来自分类Dev

基本的C ++错误。运行时检查失败#2-变量'matrix'周围的堆栈已损坏

Related 相关文章

  1. 1

    C#在运行时切换枚举

  2. 2

    在C ++中的<<和>>之间运行时切换

  3. 3

    在 C 中访问越界数组不会出现运行时错误

  4. 4

    (在C中)使用数组实现堆栈-将数组大小加倍时出现运行时错误

  5. 5

    堆栈溢出运行时错误C ++

  6. 6

    C中的运行时错误(CodeChef)

  7. 7

    C ++中运行时的分段错误

  8. 8

    C中奇怪的运行时错误?

  9. 9

    C ++中的运行时错误

  10. 10

    C ++代码中的运行时错误

  11. 11

    代码C ++中的运行时错误

  12. 12

    如果将C函数放在单独的文件中,则会出现减速问题?

  13. 13

    C-释放Malloc。运行时出现错误

  14. 14

    C:运行时出现“访问冲突”错误

  15. 15

    反转C中的链接列表时出现运行时错误

  16. 16

    C#后台线程在UserControl中运行时出现错误

  17. 17

    C ++调用getenv(“ LINES”)或getenv(“ COLUMNS”)在Xcode中运行良好,在终端中运行时出现段错误

  18. 18

    C中结构的运行时条件字段

  19. 19

    如果我在C#的文本框中以小数点开始输入,则会出现输入格式异常

  20. 20

    分析时间时C ++中的运行时错误

  21. 21

    循环和运行时错误中的C ++变量声明

  22. 22

    C ++中动态内存分配的运行时错误

  23. 23

    C ++中的指针和运行时错误

  24. 24

    使用C在Spoj中运行时NZEC错误

  25. 25

    为什么 bfs c ++ 中的运行时错误

  26. 26

    C++ 工厂模式中的运行时错误

  27. 27

    尝试在C语言中通过结构实现堆栈,但以下代码出现运行时错误。谁能解释和指出出了什么问题?

  28. 28

    尝试在C#中的类中向列表属性添加项目时出现运行时错误

  29. 29

    基本的C ++错误。运行时检查失败#2-变量'matrix'周围的堆栈已损坏

热门标签

归档