我在我的代码中的一个问题导致运行时错误。 要调试,我扔在一些语句COUT找到的最后位置的代码执行正确的代码。 基于输出,它看起来像while语句休息时,当条件计算为假,但我不能看到这是可能的。 下面的代码:
是的声明:
queue<string> newOrder;
stack< vector<char> > opStack;
char symbol;
事情发生用于填充栈和队列,然后达到这样的代码:
while(opStack.empty()==false){
if(opStack.top()[1] != 'L'){
cout<<"is stack empty?:"<<opStack.empty()<<endl;
symbol = opStack.top()[0];
newOrder.push(symbol);
opStack.pop();
cout<<"popped stack;"<<endl;
cout<<"is stack empty?:"<<opStack.empty()<<endl;
}
else{
break;
}
}
cout<<"made it out of while loop";
if(opStack.top()[1] == 'L'){
opStack.pop();
}
else{
errorEncountered = true;
}
这是输出:
is stack empty?:0
popped stack;
is stack empty?:1
RUN FAILED (exit value 1, total time: 1s)
因此,基于所述输出,堆栈在循环结束时清空。 这应该使while循环条件为假,但while循环退出之前的计划失败。 这怎么可能? 是否有事可做与堆叠的工作方式?