Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » mehrdimensional Arrays dynamisch erstellen (C++)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.11.2008, 22:14 Uhr
KFC Embryo
Ein Huhn


Hallo,

ich habe mal einige Fragen zu dem Thema mehr dimensionale Arrays und zwar:

Gehen wir einmal davon aus das ich ein Programm in C++ schreiben wollte in dem ich mit Matrizen rechnen möchte.
Addition, Transponieren, etc.

Addition zum Beispiel soll als Methode implementiert werden.
Dann ist es ja notwendig dass ich dieser Funktion ein mehr dimensionales Array übergebe, meine Matrix nämlich.

Wo wir bei meiner ersten Frage wären:
Wie übergebe ich ein mehr dimensionales Array an eine Funktion/Methode?

Um überhaupt ein mehr dimensionales Array übergeben zu können brauch ich ja erst mal eins.
Meine 2te Frage:

Wie erstell ich ein mehr dimensionales Array dynamisch und halte es flexibel, flexibel in dem Sinne dass der Nutzer die Größe des Array bestimmen kann.
Die Werte die das mehrdimensionale Array enthalten soll sind nicht so wichtig.
Es langt: 1 bis n-1 wobei n die Größe der Spalte bzw. Zeile ist z.B.:

123
456
789

Bei der Array Größe [3][3].
Ich denke damit wird klar was ich meine.
Jetzt habe ich eine weitere Frage:

Um das mehr dimensionale Array zu erstellen ist es da sinnvoll eine weitere Methode zu verwenden die man Beispielsweise „MatrixInitialisierung“ nennt?
Oder aber lässt man den Konstruktor diese Arbeite machen?

Um meine Fragen noch einmal zusammen zufassen:

Wie übergebe ich ein mehr dimensionales Array an eine Funktion/Methode?

Wie erstell ich ein mehr dimensionales Array dynamisch und halte es flexibel, flexibel in dem Sinne dass der Nutzer die Größe des Array bestimmen kann?

Um das mehr dimensionale Array zu erstellen ist es da sinnvoll eine weitere Methode zu verwenden die man Beispielsweise „MatrixInitialisierung“ nennt oder aber lässt man den Konstruktor diese Arbeite machen?


Würde mich freuen wenn mir diese Fragen jemand beantworten kann, habe auch schon viel im Forum gelesen konnte allerdings meine Frage nicht so richtig beantworten.

Danke.
Gruß
--
An nescis, mi fili, quantilla prudentia mundus regatur?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.11.2008, 20:48 Uhr
xXx
Devil


Nja es gibt mehrere Möglichkeiten, einmal kannst du einfach die Dimensionen auf eine Runterbrechen ... bei 2d bietet sich das an, da es schön einfach ist, danach wird die formel etwas umständlicher


C++:
// erstellen
type* ptr_array(new type[width * height]);

// zugriff ber index operator
ptr_array[y * width + x]

// löschen
delete [] ptr_array;

Dann geht's natürlich auch so:

C++:
type** ptr_array(new type*[height]);
for (type** ptr_it(ptr_array); ptr_it != ptr_array + height; ++ptr_it) *ptr_it = new type[width];

ptr_array[y][x]

for (type** ptr_it(ptr_array); ptr_it != ptr_array + height; ++ptr_it) delete [] *ptr_it;
delete [] ptr_array;

Oder für die Faullen:

C++:
std::vector< std::vector<type> > array;
so, sonst fällt mir gerade kein weg mehr ein.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: