Шрифт:
Чтобы узнать, используется ли подсчет ссылок в вашей реализации
Если доступная реализация
Из всего сказанного можно сделать простой вывод — массивы с динамическим выделением памяти часто требуют лишней работы. Чтобы упростить себе жизнь, используйте
Совет 14. Используйте reserve для предотвращения лишних операций перераспределения памяти
Одной из самых замечательных особенностей контейнеров STL является автоматическое наращивание памяти в соответствии с объемом внесенных данных (при условии, что при этом не превышается максимальный размер контейнера — его можно узнать при помощи функции
1. Выделение нового блока памяти, размер которого кратен текущей емкости контейнера. В большинстве реализаций
2. Копирование всех элементов из старой памяти контейнера в новую память.
3. Уничтожение объектов в старой памяти.
4. Освобождение старой памяти.
При таком количестве операций не приходится удивляться тому, что динамическое увеличение контейнера порой обходится довольно дорого. Естественно, эту операцию хотелось бы выполнять как можно реже. А если это еще не кажется естественным, вспомните, что при каждом выполнении перечисленных операций все итераторы, указатели и ссылки на содержимое
Функция
• Функция
• Функция
• Функция
•Функция