Возможный дубликат:
Вопрос стека STL: почему pop() не выдает исключение, если стек пуст?
При проектировании стека в С++, что должен сделать метод pop() (или front()), когда стек пуст? Какой из следующих вариантов лучше?
- Выбросить исключение
- Undefined, но требует, чтобы пользователь вызывал метод isempty() для проверки перед вызовом pop()
- Возвращает код bool, используя дополнительный параметр (ссылку), чтобы передать popped element
- Определить уникальный пустой элемент
Хорошо, я вижу, что мой вопрос не так ясен, позвольте мне переписать его:
Существуют некоторые структуры данных, которые могут быть реализованы на основе связанного списка, такого как стек, очередь, и каждый из них имеет методы, возвращающие передний элемент (или хвост).
Я хочу знать, существует ли какое-либо принципиальное правило о разработке такого метода в отношении случая, когда данные пусты.
И мое определение лучше "легко использовать правильно и трудно использовать неправильно".