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