Frage

if (vector1.x > ((float*)&vector1)[j])

Ist j einfach nur ein Index in den Vektor?
z.B. C ++ können diese Werte unter Verwendung von Array-Notation obwohl Vektor kein Array abzurufen?
Wenn dies der Fall erreicht Ich vermute, es dies durch Bezugnahme auf Vektor durch seine Adresse?

War es hilfreich?

Lösung

Die C ++ Standard besagt, dass auf einen Zeiger des Typs des ersten Elements ein (Hülsen) Struktur des Zeigers Gießen einen Zeiger auf das erste Element ergeben:

struct a {
    float a1;
    float a2;
    float a3;
};

a o1; ((float*)&o1); // points to o1.a1

Ich vermute, dass Code der Compiler gesagt keine Polsterung zwischen a1, a2 und a3 hinzuzufügen, so dass, wenn es Indizes der Zeiger, wird es genau mit dem Schwimmer Zeiger es will. So oben

((float*)&o1)[1] // *would* return o1.a2

Das ist plattformabhängig, als Polsterung nicht in Standard C ++ geändert werden kann. Lookup, wie das Code ordnet sie, und ob ich Recht überhaupt:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top