Quick background
Я разработчик Java, который играл со С ++ в свободное время.Почему pop() принимает аргумент?
Предисловие
В C++, вы часто видите поп принимает аргумент по ссылке:
void pop(Item& removed);
Я понимаю, что это хорошо «заполнить» параметр с тем, что вы удалили. Для меня это совершенно разумно. Таким образом, человек, который попросил удалить верхний элемент, может посмотреть, что было удалено.
Однако, если бы я сделать это в Java, я хотел бы сделать что-то вроде этого:
Item pop() throws StackException;
Таким образом, после того, как поп мы возвращаем либо: NULL в результате, элемент, или исключение будет выбрано.
В моем текстовом сборнике на C++ показан пример выше, но я вижу много реализаций стека без аргументов (например, stl stack).
Вопрос
Как следует реализовать функцию поп в C++?
Бонус
Почему?
Удивительные ссылки, большое спасибо. Итак, если меня попросят в интервью реализовать pop() в C++ ... должен ли я дать им ваш ответ? : p – Stephano
+ 1 ... но, возможно, «если вы реализуете функцию pop в C++, вы должны следовать стандартным интерфейсам контейнера». – Potatoswatter
@Stephano: Зависит от того, чего хочет интервьюер. Некоторые могут быть удовлетворены тем, что вы знаете о 'std :: stack' и знаете, что у него есть методы« push »,' top' и 'pop'. Некоторые могут захотеть, чтобы вы реализовали свой собственный стек с использованием массива с фиксированной длиной, чтобы увидеть, можете ли вы это сделать. – Dan