コードに問題があり、実行時エラーが発生します。いくつかのcoutステートメントでスローしたコードをデバッグして、コードが正しく実行される最後の場所を見つけます。出力に基づくと、while条件がfalseと評価されると、whileステートメントが壊れているように見えますが、それがどのように可能であるかはわかりません。コードは次のとおりです。
var宣言:
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ループ条件がfalseになりますが、プログラムはwhileループが終了する前に失敗します。どうしてそれが可能でしょうか?スタックの動作方法と関係がありますか?