One might wonder why pop() returns void, instead of value_type. That is, why must one use top() and pop() to examine and remove the top element, instead of combining the two in a single member function? In fact, there is a good reason for this design. If pop() returned the top element, it would have to return by value rather than by reference: return by reference would create a dangling pointer. Return by value, however, is inefficient: it involves at least one redundant copy constructor call. Since it is impossible for pop() to return a value in such a way as to be both efficient and correct, it is more sensible for it to return no value at all and to require clients to use top() to inspect the value at the top of the stack.
Вы читали что написано в доках SGI? Из каких таких соображений производительности?
Поясню, допустим вызываем pop (казалось почему бы ему не вернуть top) — он создает копию top'а — для этого вызывается конструктор нашего объекта, а он допустим выделяет гигибайт памяти и устанавливает соединение с базой данных… могу ещё пример придумать.
А я всегда думал что pop должен только удалять. Я в javascript не силён, но в плюсах принято возвращать void.
Почему — www.sgi.com/tech/stl/stack.html (последняя заметка под номером 3)
Да ладно! ) Между прочим это очень интересно и полезно (для развития интуиции). Я тоже помню руками выписывал для квадратичных иррациональностей приближенные десятичные разложения по многу знаков, и для дробей уже точные.
Я потом где-то прочитал что Гаусс (да-да — в детстве) руками считал периоды дробей 1/p где p простое <=1000.
интересно как же тогда искать книги по кодингу, математике… ?)
книги по алгоритмам, теории чисел, и смежным областям — цифра
под php, linux, си,… — … ?)
И ещё пример — в конструкторе происходит ошибка, бросается исключение.
Поясню, допустим вызываем pop (казалось почему бы ему не вернуть top) — он создает копию top'а — для этого вызывается конструктор нашего объекта, а он допустим выделяет гигибайт памяти и устанавливает соединение с базой данных… могу ещё пример придумать.
Почему — www.sgi.com/tech/stl/stack.html (последняя заметка под номером 3)
Я потом где-то прочитал что Гаусс (да-да — в детстве) руками считал периоды дробей 1/p где p простое <=1000.
книги по алгоритмам, теории чисел, и смежным областям — цифра
под php, linux, си,… — … ?)
не отказался бы… )
Проще купить GP и скачивать табы с 911, ultimate-guitar…