Шрифт:
Эту ситуацию можно изобразить графически.
Поскольку нумерация элементов начинается с нуля, мы показываем, что переменная
Когда вектор создается впервые, переменная
Мы не начинаем выделение дополнительных слотов, пока количество элементов не изменится. Обычно это происходит, когда выполняется условие
Конструктор по умолчанию (создающий объект класса
Эта ситуация выглядит следующим образом:
“Запредельный элемент” является лишь умозрительным. Конструктор по умолчанию не выделяет свободной памяти и занимает минимальный объем (см. упр. 16). Наш класс
19.2.2. Функции reserve и capacity
Самой главной операцией при изменении размера контейнера (т.е. при изменении количества элементов) является функция
Обратите внимание на то, что мы не инициализировали элементы в выделенной памяти. Мы просто резервируем память, а как ее использовать — задача функций
Очевидно, что пользователя может интересовать размер доступной свободной памяти в объекте класса
Иначе говоря, для объекта класса
19.2.3. Функция resize
Имея функцию
• Новый размер больше ранее выделенной памяти.
• Новый размер больше прежнего, но меньше или равен ранее выделенной памяти.
• Новый размер равен старому.
• Новый размер меньше прежнего.
Посмотрим, что у нас получилось.
Основная работа с памятью поручена функции