Czy wektor tablic jest ciągły?
Jeśli tworzę
std::vector<std::array<double, 2>> points;
std::vector<double> points2;
Wiem, że points2 będzie ciągłym kawałkiem pamięci, zawierającym podwojenie w stercie. Myślę, że punkty będą ciągłym kawałkiem pamięci podwójnego * do stosu? Ale czy te tablice będą ciągłe w stosie? Powiedzmy, że przechowuję pary podwójnych, aby reprezentowały pewne punkty.
punkty2 są w pamięci w ten sposób: [x0 y0 x1 y1 x2 y2 ...] A co z punktami? Jaki jest najlepszy sposób na przechowywanie pary podwójnej w tym przypadku? Dzięki za jakąkolwiek wskazówkę.
Odpowiedzi
Czy wektor tablic jest ciągły?
Nie, nie jest. std::array
może zawierać wyściółkę lub nawet dodatkowe elementy na końcu. Więcej szczegółów, np. Tutaj:
- Czy dane w zagnieżdżonych tablicach std :: gwarantowane są ciągłe?
- Czy rozmiar std :: array jest zdefiniowany przez standard
Ale uważam, że jest to bardzo mało prawdopodobne i możesz po prostu sprawdzić takie sytuacje, porównując 2 * sizeof(double)
z sizeof(std::array<double, 2>)
.