Шрифт:
Вероятно, решение с циклическим вызовом
Обратите внимание на сохранение значения, возвращаемого при вызове
Попробуем последовать совету 43 и заменим цикл вызовом copy:
После создания экземпляра шаблона решение с
Первая потеря обусловлена лишними вызовами функций. Естественно, последовательная вставка
Подстановка не спасает от второго вида затрат, обусловленных неэффективностью перемещения существующих элементов
С другой стороны, Стандарт требует, чтобы интервальные функции
Прежде чем переходить к третьей категории затрат, стоит сделать небольшое замечание. То, что написано в предыдущем абзаце — правда, только правда и ничего, кроме правды, но это не вся правда. Интервальная форма
Мы подошли к третьей категории затрат, от которых страдают неразумные программисты, использующие многократную вставку отдельного элемента вместо одной вставки целого интервала. Эти затраты связаны с выделением памяти, хотя они также имеют неприятные аспекты, относящиеся к копированию. Как объясняется в совете 14, когда вы пытаетесь вставить элемент в вектор, вся память которого заполнена, вектор выделяет новый блок памяти, копирует элементы из старой памяти в новую, уничтожает элементы в старой памяти и освобождает ее.