C++栈STACKEMPTY的一点疑问

写了一个栈,push了3个元素,后全部pop 想写一个STACKEMPTY判断空栈,如果为空返回1,否则return 0。但是好像空栈top()调用会报错,但是我的STACKEMPTY判断需要top(),所以无法判断空栈

#include
#include
#include
using namespace std;
stack<int >stk;
queue<int>q;
int STACKEMPTY() {
    if (stk.top() == 0)
    {
        return 1;
    }
    else {
        return 0;
    }
}
int main() {
    



    stk.push(10);
    stk.push(8);
    stk.push(65);
    stk.pop();
    stk.pop();
    stk.pop();
    
    STACKEMPTY();
    
    
}

报错

参考GPT和自己的思路:

您的代码中出现这个错误是因为当栈为空时,调用 top() 函数是非法的,因为没有元素在栈中。因此,您需要先判断一下栈是否为空,然后再调用 top() 函数。以下是改正后的代码示例:

int STACKEMPTY() {
    if (stk.empty()) {
        return 1;
    } else {
        return 0;
    }
}

在以上代码中,我们使用了 empty() 函数来判断栈是否为空。如果栈为空,即没有元素,它将返回 true,否则返回 false。根据返回值我们就可以判断栈是否为空,从而避免了 top() 函数在空栈上的错误调用。

希望这能解决您的问题!

STACKEMPTY();
这里你调用了,但是没有输出结果