在stl stack cpp中查找元素

时间:2016-03-17 14:37:08

标签: c++ search stl stack

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

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

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

1 个答案:

答案 0 :(得分:2)

您的代码似乎依赖于short circuit evaluation。但是,它的工作方式是

cond_a || cond_b

首先评估cond_a,然后仅在需要时cond_b 。在这种情况下,那么,你的代码只会在检查top之后检查堆栈是否为空,这显然是一个错误。你应该改变你的两个内部条件的顺序。