¿Es un vector de matrices contiguo?
Si creo
std::vector<std::array<double, 2>> points;
std::vector<double> points2;
Sé que points2 será un trozo contiguo de memoria que contiene dobles en el montón. Creo que los puntos serán una porción contigua de memoria de doble * a la pila. Pero, ¿esas matrices serán contiguas en la pila? Digamos que estoy almacenando pares de dobles para representar algunos puntos.
points2 está en la memoria así: [x0 y0 x1 y1 x2 y2 ...] ¿Qué pasa con los puntos? ¿Cuál es la mejor manera de almacenar pares de dobles en este caso? Gracias por cualquier consejo.
Respuestas
¿Es un vector de matrices contiguo?
No, no es. std::array
puede contener relleno o incluso miembros adicionales al final. Más detalles, por ejemplo, aquí:
- ¿Se garantiza que los datos de las matrices std :: anidadas sean contiguas?
- ¿Es el tamaño de std :: array definido por estándar?
Pero creo que es muy poco probable que esto suceda y simplemente puede verificar tales situaciones comparando 2 * sizeof(double)
con sizeof(std::array<double, 2>)
.