Apakah vektor array bersebelahan?

Dec 29 2020

Jika saya membuat

std::vector<std::array<double, 2>> points;
std::vector<double> points2;

Saya tahu bahwa poin2 akan menjadi bagian memori yang berdekatan yang memegang ganda di tumpukan. Saya pikir poin itu akan menjadi potongan memori yang bersebelahan * ganda ke tumpukan? Tetapi apakah array tersebut akan bersebelahan dalam tumpukan? Katakanlah saya menyimpan pasangan ganda untuk mewakili beberapa poin.

poin2 ada di memori seperti ini: [x0 y0 x1 y1 x2 y2 ...] Bagaimana dengan poin? Apa cara terbaik untuk menyimpan pasangan ganda dalam kasus ini? Terima kasih atas tipnya.

Jawaban

2 DanielLangr Dec 29 2020 at 04:16

Apakah vektor array bersebelahan?

Tidak, bukan itu. std::arraymungkin berisi padding atau bahkan anggota tambahan di bagian akhir. Lebih jelasnya, misalnya di sini:

  • Apakah data dalam std :: array bersarang dijamin bersebelahan?
  • Adalah ukuran std :: array yang ditentukan oleh standar

Tapi saya yakin ini sangat tidak mungkin terjadi dan Anda hanya dapat memeriksa situasi seperti dengan membandingkan 2 * sizeof(double)dengan sizeof(std::array<double, 2>).