だから私はこのコードのビットに困惑しています - なぜそれが誤動作しているのか理解できません. 私が考えることができる唯一のことは、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)