Initialisierung Array von Arrays - Probleme

8

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)

    
Dr.Kameleon 15.12.2012, 07:22
quelle

3 Antworten

5

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 :

%Vor%     
TimoteeTheCodeMonkee 15.12.2012, 07:51
quelle
4

Wenn Sie C ++ 11 verwenden, ist die Initialisierungsliste für array flexibel:

%Vor%

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%     
Barnabas Szabolcs 15.12.2012 08:06
quelle
1

Sie können die Tatsache, dass ein zweidimensionales Array tatsächlich ein eindimensionales Array von Zeigern ist, zu Ihrem Vorteil nutzen. Die folgende Initialisierung sollte für Sie funktionieren.

%Vor%     
iagreen 15.12.2012 08:08
quelle