OK, ich weiß, dass in C ++ ein - sagen wir 2-dimensionales - Array auf diese Weise initialisiert werden kann:
%Vor% Was nun, wenn ich bereits existierende Arrays als Elemente von theArray
verwenden möchte?
z. B.
%Vor%Dieser Befehl löst einen Fehler aus:
%Vor%Ich sehe den Punkt, aber hoffentlich können Sie meinen sehen.
Gibt es einen Workaround, damit ich das gleiche erreichen kann? (Irgendwelche Vorschläge - vielleicht etwas mit Boost? - ist willkommen)
Ich kann sehen, warum dies in C nützlich ist, aber nur der Variablenname eines Arrays gibt die Adresse des Arrays im Speicher zurück. Der Compiler hat keine Ahnung, was während der Kompilierzeit tatsächlich in A gespeichert wird, also würde das nicht funktionieren.
Alternativ könntest du entweder einen memcpy verwenden und die Elemente in das Array kopieren (aber dann wird es nicht const
sein), oder du könntest einen #define A { 1, 2, 3, 4 }
verwenden und dann vielleicht etwas wie :
Wenn Sie C ++ 11 verwenden, ist die Initialisierungsliste für array
flexibel:
funktioniert gut, vorausgesetzt, A..L
sind std::array<64, U64>
.
Das Array hat keinen Overhead für das c-array. Klicken Sie hier, um eine offizielle Referenz zu erhalten.
"Die Größe und Effizienz des Arrays für eine bestimmte Anzahl von Elementen ist entspricht der Größe und Effizienz des entsprechenden C-artigen Arrays T [N]. "(Aus der Referenz)
Ich sagte "flexibel", da Sie eine gemischte Initialisierungsliste wie folgt verwenden können:
%Vor%Sie können dies als Array fester Größe mit den gleichen Operationen verwenden:
%Vor%Tags und Links c arrays c++ clang multidimensional-array