Dizilerin bir vektörü bitişik midir?

Dec 29 2020

Eğer yaratırsam

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

Puan2'nin, yığında çiftleri tutan bitişik bir bellek parçası olacağını biliyorum. Sanırım bu noktalar yığına çift * şeklinde bitişik bir bellek parçası olacak? Ama bu dizi yığında bitişik olacak mı? Diyelim ki bazı noktaları temsil etmek için çift çiftleri depoluyorum.

puan2 şu şekilde bellekte: [x0 y0 x1 y1 x2 y2 ...] Puanlar ne olacak? Bu durumda çiftleri saklamanın en iyi yolu nedir? Herhangi bir ipucu için teşekkürler.

Yanıtlar

2 DanielLangr Dec 29 2020 at 04:16

Dizilerin bir vektörü bitişik midir?

Hayır öyle değil. std::arraysonunda dolgu veya hatta ek üyeler içerebilir. Daha fazla ayrıntı, örneğin burada:

  • İç içe geçmiş std :: dizilerdeki verilerin bitişik olması garantili mi?
  • Std :: array'in boyutu standart olarak tanımlanır

Ama bunun olmasını çok olası olduğuna ve sadece karşılaştırarak tür durumlardan kontrol edebilirsiniz 2 * sizeof(double)ile sizeof(std::array<double, 2>).