Смежен ли вектор массивов?
Если я создам
std::vector<std::array<double, 2>> points;
std::vector<double> points2;
Я знаю, что points2 будет непрерывным фрагментом памяти, содержащим двойные файлы в куче. Думаю, точки будут непрерывным куском памяти от double * до стека? Но будет ли этот массив непрерывным в стеке? Скажем, я храню пары двойников для представления некоторых точек.
Points2 находится в памяти следующим образом: [x0 y0 x1 y1 x2 y2 ...] А как насчет точек? Как лучше всего хранить пару дублей в этом случае? Спасибо за любой совет.
Ответы
Смежен ли вектор массивов?
Нет. std::array
может содержать заполнение или даже дополнительные элементы в конце. Подробнее, например, здесь:
- Гарантируется ли непрерывность данных во вложенных массивах std ::?
- Размер std :: array определен стандартом
Но я считаю, что это очень маловероятно, и вы можете просто проверить такие ситуации, сравнив 2 * sizeof(double)
с sizeof(std::array<double, 2>)
.