Почему `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

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