Array kopieren
-
Hallo,
Ich habe eine Methode, die je nach Eingabeparameter (0-5), Daten aus einem von sechs verschiedenen 2-dimensionalen Arrays abfragt (nur Lesezugriff).
Am liebsten hätte ich es also der Form:int a[5][5] = {...}; ... switch(index) { case 0: int temp[5][5] = a; break; case 1: ... }Wonach die Methode dann auf dem Array temp arbeiten würde.
Da das aber in der Form in C++ nicht zu gehen scheint, frage ich mich, was der beste Weg ist, mein Problem zu lösen.
Freue mich über Vorschläge!
Beste Grüße,
t0bsen
-
Da das aber in der Form in C++ nicht zu gehen scheint,
Das ist keine gute Fehlerbeschreibung. Und es geht bestimmt ... Hilft int** temp = a? In der Form wird aber nichts kopiert.
-
Wie knivil schon sagte, ist die Fehlerbeschreibung etwas dürftig. Für mich ist allerdings auch der Rest der Beschreibung etwas dürftig. Was genau willst du?
Willst du eine Kopie eins C Arrays?
Da gibt es verschiedene Möglichkeiten. Am besten wäre hier aber wohl gleich entsprechende Hilfsmittel aus der Standardbibliothek zu nehmen:std::tr1::arrayoderstd::vector.Willst du einen Zeiger auf ein enstprechendes C Array?
Dann geht dies so:int a[5][5]; int* p = &a[0][0]; // Zeiger auf das erste Element. p[0] = 0; // Wert an a[0][0] zuweisen p[1] = 1; // Wert an a[0][1] zuweisen p[2] = 2; // Wert an a[0][2] zuweisen // ... p[5] = 5; // Wert an a[1][0] zuweisen p[6] = 6; // Wert an a[1][1] zuweisen // usw.Das Arbeiten mit 2D C Array ist mühsam, am besten man verzichtet darauf

Grüssli
-
Hallo,
danke für eure Antworten! Ich habe das Problem mittlerweile lösen können.
Das eigentliche Problem war nicht, das Array zu kopieren, sondern das richtige Array auszuwählen.
Ich wollte zuerst ein Array haben in das jeweils das aktuell gebrauchte gespeichert wird um dann darauf zu arbeiten.
Da wusste ich nicht weiter, weil mir außer einer for-Schleife keine Möglichkeit einfiel, das zu realisieren.Mittlerweile ist mir aber aufgefallen, dass die Idee sowieso nicht so toll war und habe es jetzt so gelöst,
dass die 2D-Arrays wiederum in ein Array gepackt werden und durch den Index direkt adressiert werden können.