0
我有一個函數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();
}
難道還有比後者一個簡單的代碼,其他區別。使用第一個還是第二個是有優勢的?
編輯:將第一個片段更改爲更可重複使用的設計明智的替換for循環與範圍與pop
函數。
我認爲,當你需要經常做一個'pop()',那麼第二個版本可能會比第一個版本慢一點,因爲for循環(更多的代碼,更多的數據)...... – mb84