Ist ein Vektor von Arrays zusammenhängend?
Wenn ich erschaffe
std::vector<std::array<double, 2>> points;
std::vector<double> points2;
Ich weiß, dass points2 ein zusammenhängender Speicherblock sein wird, der Doppel im Haufen hält. Ich denke, dass Punkte ein zusammenhängender Speicherblock von double * zum Stapel sein werden? Aber werden diese Arrays im Stapel zusammenhängend sein? Angenommen, ich speichere Doppelpaare, um einige Punkte darzustellen.
points2 ist wie folgt im Speicher: [x0 y0 x1 y1 x2 y2 ...] Was ist mit Punkten? Was ist in diesem Fall der beste Weg, um ein Paar Doppel zu speichern? Danke für jeden Tipp.
Antworten
Ist ein Vektor von Arrays zusammenhängend?
Nein ist es nicht. std::array
kann am Ende Polster oder sogar zusätzliche Elemente enthalten. Weitere Details zB hier:
- Sind die Daten in verschachtelten std :: arrays garantiert zusammenhängend?
- Ist die Größe von std :: array standardmäßig definiert?
Aber ich glaube , dass dies sehr unwahrscheinlich ist und Sie können einfach solche Situationen überprüfen durch den Vergleich 2 * sizeof(double)
mit sizeof(std::array<double, 2>)
.