2

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

0 に答える 0