Почему `std::vector` не сохраняет емкость в куче?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему `std::vector` не сохраняет емкость в куче?

Сообщение Anonymous »

В C++ std::vector обычно реализуется (игнорируя распределитель) со следующими элементами данных:

Код: Выделить всё

template
class vector {
T* ptr_ = nullptr;
size_t size = 0;
size_t capacity = 0;
// ...
};
что означает, что sizeof(vector) == 24. Учитывая, что к емкости редко обращаются, не имеет ли смысла хранить ее в выделенной части кучи, чтобы sizeof(vector) == 16? Сохранено ли это только из соображений совместимости с ABI?
Можно даже поместить размер в кучу, что удешевит перемещение вектора, хотя размер станет дороже для доступа. Я вижу аргумент, что здесь есть компромисс, но с точки зрения емкости это кажется довольно очевидным.

Подробнее здесь: https://stackoverflow.com/questions/793 ... n-the-heap
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»