Я нашел этот поток, потому что у меня есть случай использования, где векторы, использующие непрерывную память, являются преимуществом.
Я учусь использовать объекты буфера вершин в OpenGL. Я создал класс-обертку, который будет содержать буферную логику, поэтому все, что мне нужно сделать, это передать массив с плавающей точкой и несколько значений конфигурации для создания буфера.
Я хочу иметь возможность генерировать буфер из функции на основе пользовательского ввода, поэтому длина не известна во время компиляции. Делать что-то подобное было бы самым простым решением:
void generate(std::vector<float> v)
{
float f = generate_next_float();
v.push_back(f);
}
Теперь я могу передать плавающие вектора в виде массива в функции буфера OpenGL. Это также устраняет необходимость в sizeof для определения длины массива.
Это гораздо лучше, чем выделять огромный массив для хранения чисел с плавающей точкой и надеяться, что я увеличил его, или создать собственный динамический массив с непрерывным хранилищем.