ыделяет блок памяти, как бы пр

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

ыделяет блок памяти, как бы предполагая, сколько объектов вы собираетесь хранить в нем. Пока количество объектов не превышает размеров изначально выделенного блока, все операции выполняются быстро (если вы знаете, сколько объектов будет храниться в векторе, можно заранее зарезервировать необходимую память функцией reserve()). Но если произойдет переполнение, вектор выполняет следующие операции. 1. Выделение нового блока памяти большего размера. 2. Копирование всех объектов из прежнего блока памяти в новый (с использованием копирующего конструктора). 3. Уничтожение всех прежних объектов (с вызовом деструктора для каждого объекта). 4. Освобождение прежнего блока памяти. Основные последовательные контейнеры 353 Если вектор переполняется достаточно часто, а содержащиеся в нем объекты достаточно сложны, конструирование копий и уничтожение обходятся достаточно дорого. По этой причине векторы (и контейнеры STL вообще) ориентированы на хранение значений, копирование которых обходится малыми затратами. К этой категории относятся указатели. Давайте посмотрим, что происходит при заполнении вектора. В этом нам по


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