Un vecteur de tableaux est-il contigu?
Si je crée
std::vector<std::array<double, 2>> points;
std::vector<double> points2;
Je sais que points2 sera un morceau contigu de mémoire contenant des doubles dans le tas. Je pense que les points seront un morceau contigu de mémoire de double * à la pile? Mais ces tableaux seront-ils contigus dans la pile? Disons que je stocke des paires de doubles pour représenter certains points.
points2 est en mémoire comme ceci: [x0 y0 x1 y1 x2 y2 ...] Et les points? Quelle est la meilleure façon de stocker une paire de doubles dans ce cas? Merci pour tout conseil.
Réponses
Un vecteur de tableaux est-il contigu?
Non, ça ne l'est pas. std::array
peut contenir un rembourrage ou même des membres supplémentaires à la fin. Plus de détails, par exemple, ici:
- Les données des tableaux std :: imbriqués sont-elles garanties d'être contiguës?
- Est la taille de std :: array définie par standard
Mais je pense que cela est très peu probable et vous pouvez simplement vérifier de telles situations en comparant 2 * sizeof(double)
avec sizeof(std::array<double, 2>)
.