这个问题已经在这里有了答案:
9年前关闭。
Possible Duplicate:
C++ STL stack question: Why does pop() not throw an exception if the stack is empty?
在C++中设计堆栈时,堆栈为空时, pop()方法(或 front()方法)应返回什么?以下哪个设计更好?
好的,我发现我的问题不清楚,让我尝试重写它:
有一些数据结构可以基于链接列表来实现,例如堆栈,队列,并且每个结构都有返回前元素(或尾元素)的方法。
我想知道,关于数据为空的情况,设计这种方法是否有任何原则性指南。
我对更好的定义是“易于正确使用而难以错误使用”。
最佳答案
按契约(Contract)编程的样式将是具有非空堆栈是调用pop
的前提,而在不满足其前提条件的情况下调用方法会产生不确定的结果。我的实现将抛出std::logic_error
,但这不是必需的。在C语言中,我的实现将通过abort
进行assert
。pop
的调用者负责确保在调用pop
之前保持堆栈不为空的前提。因此,堆栈应具有isEmpty
方法供调用者检查。
关于c++ - 当堆栈为空时, 'pop()'方法应该返回什么? ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26827006/