所以我对这段代码感到慌乱 - 无法理解为什么它行为不端。我唯一能想到的是 stack.empty() 在 while 循环中不能正常工作,但这似乎很荒谬。您将在代码后面的输出中看到,在运行失败之前程序永远不会退出 while 循环。
opStack 和 newOrder 的声明:
queue<string> newOrder;
stack< vector<char> > opStack;
发生其他事情,然后执行此代码:
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";
输出:
is stack empty?:0
popped stack;
is stack empty?:1
RUN FAILED (exit value 1, total time: 1s)