У меня есть функция pop
с одним аргументом, который выталкивает элементы из стека. Я хочу иметь возможность использовать pop()
, который удалит один элемент сверху; и pop(any_number)
, который выведет несколько элементов сверху. Мне было интересно узнать о тривиальной детали реализации.ошибка по умолчанию или функция по умолчанию
функция перегрузка:
void pop() {
if(!stack.empty())
stack.pop();
}
void pop(int n) {
for(int i = 0; i < n; ++i)
pop();
}
функция по умолчанию аргумент:
void pop(int n = 1) {
for(int i = 0; i < n; ++i)
if(!stack.empty())
stack.pop();
}
Есть ли разница, кроме простого кода в последнем. Есть ли преимущество при использовании первого или второго?
EDIT: изменил первый фрагмент, чтобы быть более многоразовым, путем замены цикла for с помощью функции pop
.
Я думаю, когда вам действительно нужно делать 'pop()', то вторая версия может быть немного медленнее, чем первая, из-за цикла for (больше кода, больше данных) ... – mb84