integer in einer schleife



  • Wozu? Willst du jetzt etwa ein Übungsprogramm vorgekaut bekommen?



  • _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 new bietet 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 an std::string ). So hat man schon wieder eine Fehlerquelle weniger.

    Von daher würde ich sagen, zuerst new und delete lernen, 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 einlesen
    

    new:

    int anzahl = 0;
    
    std::cin >> anzahl;
    
    int* v = new int[anzahl];
    
    //füllen
    


  • cool danke 😃



  • Nur damit es nicht vergessen geht: Wenn du new einsetzt, musst du ein entsprechendes delete für die Freigabe haben. Bei der Allokation eines dynamischen Arrays mittels new[] wäre die Entsprechung delete[] .

    Aber die STL-Container wie std::vector sind grundsätzlich viel komfortabler und sicherer.


Anmelden zum Antworten