Ist ein Vektor von Arrays zusammenhängend?

Dec 29 2020

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

2 DanielLangr Dec 29 2020 at 04:16

Ist ein Vektor von Arrays zusammenhängend?

Nein ist es nicht. std::arraykann 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>).