回 帖 发 新 帖 刷新版面

主题:[讨论]调用stack::empty()死循环

#include<stack>
int main()
{
    stack<char> charStack;
    cout << charStack.top() << endl;
    cout << charStack.empty() << endl;

    return 0;
}

编译正确,空栈先调用top(),再调用empty(),飞掉。
不知道什么原因,请教各位前辈。

出自C++ primer 4th 习题9.43 配套答案也有问题。

运行环境:Windows 7 x64 旗舰版,分别在 VC6 和 Codeblock (使用gcc编译器) 下编译,均出现这种情况。

回复列表 (共2个回复)

沙发

int main()
{
    stack<char> charStack;

    if( !charStack.empty() )
        cout << charStack.top() << endl;

    return 0;
}

板凳

谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册