Anzahl der Arrays nacher definieren
-
Siehe dazu auch http://www.cplusplus.com/reference/stl/vector/.
-
Showball schrieb:
int *Array; for(int i = 0; i < 100; i++) { Array = new int[1]; Array[i] = 123; }Habe ich das richtig verstanden?
Nein! Absolut nicht!
Nimm einen std::vector<int> !! Wirklich!
-
Hmm, ich hoffe ihr habt mich rihtig verstanden, das mit dem Vektor dieht nähmlich so aus, als ob das auch fest definiert ist, nur das ich es nacher definieren kann.
Was ich bezwecken will, ist, das jedes mal wenn ich 1 Array mehr benötige, auch nur einen Array hin zu füge.
-
Tachyon hat recht,
bzgl. deines Probs solltest du stl::vec's benutzen da die sich automatisch vergößern.
edit:
Ein array besteht wie der vec aus elementen, der vec vergrößert sich für den user während der laufzeit automatisch wenn du ein neues element am ende einfügst. Mit den standart array's müsstest du eine kopie mit größerer anzahl erstellen, dann dan altes hineinkopieren und das neue element hineinkopieren, das orig array dann freimachen, neu allocieren und dann die kopie ins neue packen etc.Nimm stl:vec's
-
Showball schrieb:
Hmm, ich hoffe ihr habt mich rihtig verstanden, das mit dem Vektor dieht nähmlich so aus, als ob das auch fest definiert ist, nur das ich es nacher definieren kann.
Was ich bezwecken will, ist, das jedes mal wenn ich 1 Array mehr benötige, auch nur einen Array hin zu füge.
So, und jetzt sag noch einmal genau, was dein Problem ist bzw. was du erreichen
möchtest.
Du möchtest kein Array hinzufügen, das mach keinen Sinn.Also?
-
Falls du wirklich eigene dynamische Arrays haben willst (zu Übungszwecken), solltest du dich unbedingt zuerst ausführlich mit Zeigern und dynamischer Speicherverwaltung befassen. Denn so bekommst du spätestens beim sauberen Freigeben wieder Probleme.
-
Schon gut, ich sehe grad das das mit den Vecs genau das richtige ist, danke!
-
Showball schrieb:
Hmm, ich hoffe ihr habt mich rihtig verstanden, das mit dem Vektor dieht nähmlich so aus, als ob das auch fest definiert ist, nur das ich es nacher definieren kann.
Was ich bezwecken will, ist, das jedes mal wenn ich 1 Array mehr benötige, auch nur einen Array hin zu füge.
Genau das tust Du mit push_back...
#include <vector> std::vector<int> Anzahl; //hier ist der Vektor noch leer... for(int i = 0; i < 100; ++i) { //bei jedem Durchlauf wird ein Element hinzugefuegt. //Bei i=0 ist also ein Element im vektor, bei i=1 2 Elemente usw. Anzahl.push_back(i); }
-
Tachyon schrieb:
Showball schrieb:
Hmm, ich hoffe ihr habt mich rihtig verstanden, das mit dem Vektor dieht nähmlich so aus, als ob das auch fest definiert ist, nur das ich es nacher definieren kann.
Was ich bezwecken will, ist, das jedes mal wenn ich 1 Array mehr benötige, auch nur einen Array hin zu füge.
Genau das tust Du mit push_back...
Jein...
Es ist nicht garantiert, das genau ein (nennen wir es mal) Eintrag hinzugefügt wird. Stichwort Größe vs. KapazitätEDIT: Es wird genau ein Eintrag hinzugefügt, aber evtl. (sehr wahrscheinlich...) Platz für mehr Einträge alloziert.
-
bladerunner10 schrieb:
Tachyon schrieb:
Showball schrieb:
Hmm, ich hoffe ihr habt mich rihtig verstanden, das mit dem Vektor dieht nähmlich so aus, als ob das auch fest definiert ist, nur das ich es nacher definieren kann.
Was ich bezwecken will, ist, das jedes mal wenn ich 1 Array mehr benötige, auch nur einen Array hin zu füge.
Genau das tust Du mit push_back...
Jein...
Es ist nicht garantiert, das genau ein (nennen wir es mal) Eintrag hinzugefügt wird. Stichwort Größe vs. KapazitätNatürlich wird genau ein Eintrag hinzugefügt.
-
Was bladerunner meint ist wenn die unglaublich kleine capacität von 99 überschritten wird wenn man den hundertsten eintrag hinzufügt.
Grüße
-
zeusosc schrieb:
Was bladerunner meint ist wenn die unglaublich kleine capacität von 99 überschritten wird wenn man den hundertsten eintrag hinzufügt.
Grüße
Er hat es aber nicht so gesagt.
-
Tachyon schrieb:
Er hat es aber nicht so gesagt.
bladerunner10 schrieb:
Stichwort Größe vs. Kapazität
Ich denke durch kurzes Überlegen könnte man es so interpretieren

Noch etwas zur Begrifflichkeit: Ein Array (auch Feld genannt) ist NICHT dasselbe wie ein Element oder ein Eintrag, sondern die ganze Struktur an sich.
int arr[43]; // arr ist ein Array mit 43 Integer-Werten arr[0]; // arr[0] ist das erste Element des Arrays arr, und KEIN ARRAY!!Genau so wenig kann man einem eindimensionalen Vektor ein Array mit
push_backhinzufügen, sondern nur einen Eintrag/einen Wert/ein Element.