Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » zweidimensionales dynamisches array deklarieren

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 < [ 2 ]
000
20.10.2004, 13:21 Uhr
~sdg
Gast


hallo, mit 'double feld[] = {0}' kann man ja ein dynamisches array erstellen. wie mache ich das aber bei einem zweidimensionalen???
'double feld[][] = {0}{0}' geht ja leider net!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.10.2004, 17:08 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


nein "dynamische arrays" musst du mit new und delete bzw. in c mit malloc und free erstellen/freigeben...

ein 2dimensionales statisches array kannst du z.b. mit
C++:
double feld[10][20];
erstellen
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 20.10.2004 um 17:08 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.10.2004, 20:18 Uhr
Hans
Library Walker
(Operator)



Zitat von ~sdg:

'double feld[][] = {0}{0}' geht ja leider net!

Hi,
schon richtig, aber

C++:
double feld[][] ={{0},{0}}

geht.
Aber: Diese Arrays sind statisch!
Unter dynamischen Arrays versteht man solche, die während der Laufzeit des Programms ihre Grösse ändern. D.h. zuerst enthält ein Array beispielsweise nur 2 Elemente, dann 5, dann 100, und am Ende nur 3. Wichtig ist dabei, das jedesmal nur soviel Speicherplatz verwendet wird, wie gerade nötig ist, um alle Arrayelemente speichern zu können, nicht mehr. Bei statischen Arrays ist immer soviel Speicherplatz vorhanden, wie Elemente in den geschweiften Klammern stehen:

C++:
double feld[] ={1.0, 1.2, 1.5, 2.5, 2.7182181, 3.14159265, 8.85E-12 };  // 7 Elemente


bzw. in den eckigen Klammern angegeben werden:

C++:
double feld[13]; // Platz für 13 Elemente


Hierbei ist es egal, ob die Arrays voll ausgenutzt werden, oder nicht. In den Beispielen sind immer 7, bzw. 13 Elemente vorhanden. Der Unterschied ist der, das im ersten Beispiel die Inhalte mit vorgegeben werden, im zweiten nicht.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.10.2004, 20:20 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Wichtig ist dabei, das jedesmal nur soviel Speicherplatz verwendet wird, wie gerade nötig ist, um alle Arrayelemente speichern zu können, nicht mehr.


das stimmt ja eher nicht so ganz...
man allokiert eigentlich immer eine gewissen menge mehr um nicht ständig nachallokieren und umkopieren zu müssen, da das unperformant ist...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 20.10.2004 um 20:21 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.10.2004, 20:31 Uhr
Hans
Library Walker
(Operator)


Hi Windalf,

lies den Abschnitt doch bitte noch mal etwas genauer!

MfG,
Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.10.2004, 20:48 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Hans
hmm habs nochmal gelesen... vielleicht ist heute nicht mein tag aber ich würde es nochmal so posten...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.10.2004, 21:30 Uhr
Hans
Library Walker
(Operator)


@Windalf,

ich glaube, heut ist wirklich nicht Dein Tag. Der Satz den Du von mir zitiert hast, bezieht sich auf das Beispiel davor. Es geht also darum, das dieses dynamische Array erst 2, dann 5, dann 100, und am Ende nur noch 3 Elemante umfasst, und jedes mal genau soviel Speicher allokiert ist, wie dafür nötig ist.
Ob das nun performant ist oder nicht, ist eine andere Frage. Aber darum ging es mir gar nicht, sondern einzig und allein darum, an einem Beispiel zu zeigen, was dynamik innerhalb eines Arrays bedeutet. Alles klar?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 20.10.2004 um 21:35 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.10.2004, 22:04 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ok...
wenn man genau weiss wieviel man brauch macht das auch sinn...
an sonsten allokiert man immer mehr und merkt sich wieviel reserviert wurde und wieviel elemente drin sind... bei ner einfügeoperation checkt man dann ob reserviert <=anzahl und allokiert dann entsprechend nach... so machen das jedenfalls die container aus der STL... und wenn man ständig die arraygrösse ändert bzw. potentiell die gefahr besteht das diese geändert werden soll ist es sinnvoll eine solche option einzubauen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
20.10.2004, 22:31 Uhr
Hans
Library Walker
(Operator)


@Windalf,

Du "redest" schon wieder über performance-fragen. Die sind zwar gut und auch wichtig, aber erst wenn man "die Sache an sich" verstanden hat. In diesem Fall also, was ein dynamisches Array überhaupt erst mal ist, im gegensatz zum statischen Array.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.10.2004, 10:17 Uhr
~sdg
Gast


hab selber ne lösung gefunden, trotzdem danke!



C++:
double** TC = new double* [x];
for (q=0; q<x; ++q)
    TC[q] = new double [y];
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Borland C++ Builder ]  


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: