c ++ while循环条件与stack.empty()不一致

时间:2012-10-30 00:58:01

标签: c++ while-loop stack

所以我对这段代码感到慌乱 - 无法理解为什么它会行为不端。我唯一能想到的是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)

0 个答案:

没有答案