ущее содержимое. Но для этого

Автор admin Воскресенье, 7 июня 2009 11:32

ущее содержимое. Но для этого необходимо сначала скопировать, а затем уничтожить старые объекты. Как нетрудно представить, при большом количестве сложных объектов эти затраты быстро становятся неприемлемыми. У проблемы есть два решения. В первом (оптимальном) случае необходимо заранее знать, сколько объектов будет создано. Тогда вы заранее резервируете необходимую память функцией reserve(); все лишнее копирование и уничтожение ликвидируется, и все операции работают очень быстро (особенно произвольный доступ к объектам, реализуемый оператором [ ]). Обратите внимание на отличие функции reserve() от конструктора vector с целочисленным первым аргументом; последний инициализирует заданное количество элементов, используя конструктор по умолчанию для типа элементов. Однако в общем случае количество объектов заранее неизвестно. Если перераспределения памяти существенно замедляют работу с вектором, попробуйте перейти на другой последовательный контейнер. Можно воспользоваться списком, но как вскоре будет показано, дек обеспечивает быструю вставку с любого конца последовательности и не требует копирования/уничтож


Комментарии закрыты.