gpt4 book ai didi

c++ - 在STL堆栈c++中查找元素

转载 作者:太空狗 更新时间:2023-10-29 21:38:08 25 4
gpt4 key购买 nike

我需要在堆栈中找到一个元素,所以我发现我必须弹出元素直到找到这个元素或堆栈为空。换句话说,当找到元素或堆栈为空时不弹出。我的思维方式有什么问题?

while (!(stack.top()==searched || stack.empty()))
{
tmp.push(stack.top());
stack.pop();
}

如果堆栈不包含搜索到的元素,代码返回核心转储,但如果stack.top()==searched总是返回0,而stack.empty返回1,1 OR 0仍然是1; !1=0 并且 'while' 应该停止。有没有办法做到这一点?我愿意接受建议。

最佳答案

看起来您的代码依赖于 short circuit evaluation .然而,它的工作方式是这样的

cond_a || cond_b

首先计算 cond_a,然后才计算 cond_b 以备不时之需。那么,在这种情况下,您的代码只会在检查了 top 之后才检查堆栈是否为空,这显然是一个错误。你应该颠倒你的两个内部条件的顺序。

关于c++ - 在STL堆栈c++中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36063696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com