Dizilerin bir vektörü bitişik midir?
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
Dizilerin bir vektörü bitişik midir?
Hayır öyle değil. std::array
sonunda 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>)
.