integer in einer schleife
-
_matze schrieb:
Dynamisches Array mit malloc oder new oder einen STL-Container wie std::vector.
malloc()lieber nicht in C++, ausser man weiss genau, was man tut, und braucht das für einen bestimmten Zweck, zum Beispiel eine eigene Speicherverwaltung.operator newbietet sonst die gleiche Funktionalität, aber auch das sollte man mit Bedacht einsetzen.P.S. Ha! Endlich war ich mal Erster mit Antworten! :p
-
malloc ist ok, solange man nicht mit Objekten arbeitet, da malloc keine Konstruktoren und free keine Destruktoren aufruft. Aber das hatten wir ja schon ein, zwei mal...
Und immer stattdessen new zu verwendet, ist natürlich nicht verkehrt. So ist man immer auf der sicheren Seite. Ich mag malloc halt irgendwie... :p
-
_matze schrieb:
malloc ist ok, solange man nicht mit Objekten arbeitet, da malloc keine Konstruktoren und free keine Destruktoren aufruft. [...] So ist man immer auf der sicheren Seite. Ich mag malloc halt irgendwie... :p
Ich kann schon nachvollziehen, dass Leute mit gewissen Neigungen zu C
malloc()okay finden. Ich finde es ja auch okay, es hat wie gesagt seine Berechtigung. Allerdings ist es meiner Ansicht nach nicht etwas, das ein Anfänger lernen sollte. Gerade weil C++ nicht nur aus PODs besteht und man als Anfänger relativ schnell mit Klassentypen in Kontakt kommt (denke man anstd::string). So hat man schon wieder eine Fehlerquelle weniger.Von daher würde ich sagen, zuerst
newunddeletelernen, die ganze Thematik der Zeiger ist schon anspruchsvoll genug. Wenn man dann zu Klassen übergeht und sich langsam mit Konstruktion, Initialisierung, Destruktion auskennt, kann man sich auch über Speicherverwaltung erkundigen und wird dann mit der Zeit wahrscheinlich über die C-Funktionen stolpern. War bei mir zumindest so.
-
Einverstanden!

-
normalerweise habe ich nur an ein simples programm das garnichts mit den integern tut eigentlich nur so zum lernen für mich ...
-
wie wärs wenn er ein int array erstellt und dieses dann mit n elementen erstellt. Das n kann man vorher eingeben
cin << n int arr[n];viel einfacher oder?
-
Nur, dass das in C++ so nicht geht! :p
-
Xbelt schrieb:
wie wärs wenn er ein int array erstellt und dieses dann mit n elementen erstellt. Das n kann man vorher eingeben
cin << n int arr[n];viel einfacher oder?
Das ist genau der Fall, wo du anfangen musst, mit new/delete zu arbeiten...
-
<<set.GER[6] schrieb:
normalerweise habe ich nur an ein simples programm das garnichts mit den integern tut eigentlich nur so zum lernen für mich ...
Also wo liegt jetzt dein Problem genau? Oder wurde deine Frage schon beantwortet?
Xbelt schrieb:
viel einfacher oder?
Aber dummerweise nicht möglich, sogar wenn man vom verkehrten Stream-Operator und dem fehlenden Semikolon absieht. :p
-
also ich versuch mich nochmal genauer auszudrücken.
Mein Problem ist:
ich weiß nicht wie man x integer erstellt
das heißt der benutzer darf sich aussuchen wieviele integer
er haben will.
und das verstehe ich nicht weil wenn ich es in einer schleife
einbringe, werden dann einfach mehrer integer einfach überschrieben.
-
Erster, zweiter und dritter Post wird das beantwortet..
std::vector:
std::vector<int> v; int anzahl = 0; std::cin >> anzahl; for (int i = 0; i < anzahl ; i++) v.push_back ( 2 ); //oder auch hier einlesennew:
int anzahl = 0; std::cin >> anzahl; int* v = new int[anzahl]; //füllen
-
cool danke

-
Nur damit es nicht vergessen geht: Wenn du
neweinsetzt, musst du ein entsprechendesdeletefür die Freigabe haben. Bei der Allokation eines dynamischen Arrays mittelsnew[]wäre die Entsprechungdelete[].Aber die STL-Container wie
std::vectorsind grundsätzlich viel komfortabler und sicherer.