push_back()



  • Hi,
    ich bin neu hier, deswegen verzeit mir die dumme Fage 😉
    Ich bin gerade dabei c++ durch Bücher und videos zu lernen. Eine Sache verstehe ich aber nicht 😕 Wo für kann ich push_back(); bei einem Vector gebrauchen?

    vector<int> test;
    int test1;
    test.push_back(test1);
    

    Danke schonmal :)→


  • Mod

    Ja, steht das denn nicht in den Büchern dabei? 😮 Was sind denn das für BücheR? Das ist schließlich die wohl meistgenutzte Funktion eines vectors.

    Hier die Hilfe zur Selbsthilfe:
    http://www.cplusplus.com/reference/vector/vector/
    http://en.cppreference.com/w/cpp/container/vector



  • Wie heißen denn deine Bücher?

    Tipp von vorne herein, vergiss die Videotutorials.



  • Leider steht nix anständiges in den Büchern. Die Links helfen auch nicht weiter 😡 Kann es vielleicht jemand in eigenen Worten erklären?

    Danke



  • Ich wüsste auch nicht was es da groß zu erklären gibt.. du hängst halt ein Element an den vector..

    v.resize(v.size() + 1);
    v[v.size() - 1] = e;
    // äquivalent zu
    v.push_back(e);
    

    An alle Deppen: Äquivalent != Gleich.



  • c++_neuling100 schrieb:

    Leider steht nix anständiges in den Büchern. Die Links helfen auch nicht weiter 😡

    So komisch es klingen mag, die Dinger anzuklicken reicht nicht. Du musst auch lesen, was da steht.



  • c++_neuling100 schrieb:

    Kann es vielleicht jemand in eigenen Worten erklären?

    Das großartige an Containern wie vector ist, dass diese Objekte enthalten können (engl. to contain).
    Genauso schön ist die Eigenschaft, dass die meisten Container quasi unbegrenzte Kapazität haben.
    D.h. in einen Container der schon 7 Objekte enthält kannst Du noch ein 8. speichern, ohne erst eins rausnehmen zu müssen.
    Dazu stopfst Du das Objekt einfach noch in den Container. Z.B. mit push_back() .

    Frage: Wie füllst Du denn Container?

    Frage an selbst: gibt es Containees?



  • Das heißt, ich habe z.B

    vector<int> test(10);
    push_back(10);//Dann habe ich 10 weitere drangehängt?
    //Aber wieso macht man nicht gleich beim Anfang 
    vector<int> test(20);//Anstadt 10 und nochmal 10 anzuhengen?
    


  • c++_neuling100 schrieb:

    Das heißt, ich habe z.B

    vector<int> test(10);
    push_back(10);//Dann habe ich 10 weitere drangehängt?
    //Aber wieso macht man nicht gleich beim Anfang 
    vector<int> test(20);//Anstadt 10 und nochmal 10 anzuhengen?
    

    Erstmal würde ich nicht davon ausgehen, dass Beispiele in Lehrbüchern immer sinnvoll sind.
    Zweitens hängt push_back() nur das Element an, dass Du übergibst. Also den Integer test1 aus Deinem Anfangspost und den Integer 10 im zitierten Beispiel.
    Der vector aus Deinem Anfangspost hat das Element test1 als letzes Element und eine Größe von 1, Der vector aus Deinem Beispiel hat 10 als letztes Element und eine Größe von 11.
    Warum 11? Dazu musst Du anschauen, was der Konstruktor macht, den Du aufgerufen hast.

    Bücher hin oder her, warum spielst Du so ein einfaches Beispiel nicht einfach mit Deinem Compiler durch? Dann wäre Dir sofort klar gewesen, wo es hakt...



  • c++_neuling100 schrieb:

    Das heißt, ich habe z.B

    Du liest dir ja offensichtlich nicht mal die Beiträge hier ordentlich durch, oder probierst Dinge mit deinem Compiler aus. Wie willst du da C++ lernen?



  • Hallo,
    nach dem Beispiel zu urteiln, wird einfach der Wert übergeben über Push_back();
    PS: Ich lese mir die Beiträge durch, jedoch verstehe ichs noch nicht so ganz, und bei denn Ausgaben von meinem Compile (DEV C++) verstehe ich nichts.

    #include <list>
    #include <iostream>
    
    int main()
    {
        std::list<int> numbers;
    
        numbers.push_back(42);
        numbers.push_back(314159); 
    
        for (int i : numbers) { // c++11 range-based for loop
            std::cout << i << '\n';
        } 
    
        return 0;
    } 
    /*Output: 
    
    42
    314159*/
    

  • Mod

    Was ist denn an der Ausgabe

    42
    314159
    

    nicht zu verstehen, wenn du in deinem Programm

    numbers.push_back(42);
        numbers.push_back(314159);
    

    machst? Fällt dir da nicht ein Zusammenhang auf? Im übrigen stammt diese Ausgabe von deinem Programm, dein Compiler ist da schon lange fertig mit seiner Arbeit.

    P.S.: Dev-C++* kann range-based for? 😮 Da tut sich ja doch was in der Entwicklung. Vor einem Jahr hätte es mich noch gewundert, wenn deren Standardcompiler nicht iostream.h statt iostream haben wollte.

    *: Das ist übrigens kein Compiler, sondern eine IDE. Das heißt ein Paket aus einem Editor, einem Compiler, einem Debugger und allerlei mehr oder weniger hilfreichem Schnickschnack. DEV-C++ war bis vor kurzer Zeit dafür berüchtigt, einen vorsintflutlichen Compiler beiliegen zu haben.



  • SeppJ: Welchen Compile/IDE würdest du mir raten? Sollte natürlich kostenlos sein 🙂 (Vielleicht auch keine Demo)
    Ne, deswegen frage ich ja auch 😉



  • c++_neuling100 schrieb:

    SeppJ: Welchen Compile/IDE würdest du mir raten? Sollte natürlich kostenlos sein 🙂 (Vielleicht auch keine Demo)
    Ne, deswegen frage ich ja auch 😉

    VC++ 2012.
    Mein Favorit ist CodeBlocks :xmas1:


  • Mod

    c++_neuling100 schrieb:

    SeppJ: Welchen Compile/IDE würdest du mir raten? Sollte natürlich kostenlos sein 🙂 (Vielleicht auch keine Demo)

    FAQ:
    http://www.c-plusplus.net/forum/263174

    Ne, deswegen frage ich ja auch 😉

    Wegen was? Drück dich mal aus, als ob du jemandem einen Brief schreibst, nicht als ob du mit einem Kumpel ein Kneipengespräch führst. Schriftsprache! Lernt man das in der Schule nicht mehr? Weder kennen wir dich gut genug, um deine Absichten zu erraten; noch können wir in deinen Kopf gucken, was du wissen möchtest.



  • Hi,
    ich wollte eigentlich nur das mir jemand in eigenen Worten, erklärt was Push_back(); macht. Abe kein Experten- gerede sondern mit Alltagswörtern, die ein 5 Jähriger Junge verstehen würde 🙄


  • Mod

    push_back hängt hinten was dran.



  • SeppJ schrieb:

    push_back hängt hinten was dran.

    🙄 Na gut, lass mas. Ich frag dann mal wo anders



  • c++_neuling100 schrieb:

    SeppJ schrieb:

    push_back hängt hinten was dran.

    🙄 Na gut, lass mas. Ich frag dann mal wo anders

    aber das ist genau die Erkärung. Kurz, simpel und präzise.

    Kann es sein, dass du gar keine Ahnung hast, was ein Container ist?

    Stell dir vor, du hast einen Ringordner. Da können diverse Zettel drin sein. Das ist dein Container. Mit "push_back" heftest du einen neuen Zettel ganz hinten im Ordner ein.



  • Achso, also wird push_back(); verwendet um ein weiters Element anzuhängen und in den Klammern gebe ich den Wert des hinzugefügten Element an.

    Ich habe mich mal anderwertig informiert und alles was hier im Forum gepostet wurde hinzugefügt :))
    Danke 🙂


Anmelden zum Antworten