stl liste



  • Ich wollte die gern benutzen. Ich habe auch hier ein schönes Buch das sich C++ Stl schimpft und wo das alles bschrieben sein sollte aber ich Blick das nicht.

    Wie lege ich davon eine Instanz an und wie füge ich Elemente hinzu?

    Bisher nutzte ich immer TList aus dem BCB.



  • Nehmen wir an Du möchtest eine liste haben die int's hält und dort 1 2 3 und 4 einfügen:

    #include <list>
    [...]
    
    std::list<int> myList;
    
    myList.push_back(1);
    myList.push_back(2);
    myList.push_back(3);
    myList.push_back(4);
    


  • Danke erstmal.
    Und wenn das nun zum Beispiel eine Klasse ist, die dort rein soll?

    Ich hab was irgendwo gesehen, das sah so aus:

    std::list<Klasse> myList;
    
    myList.push_back(Klasse());
    

    Da push_back laut meinen Buch aber void zurückgibt frage ich mich wie ich dann da was eintragen soll. Ich bräuchte dann ja den Zeiger auf die Gerade eben erstellte Klasse?!

    Und dann steht bei mir noch was von Allocatoren beim erstellen der Liste
    , die irgendwie die Speicherverwaltung der Liste regeln aber das durchschau ich noch weniger.

    Ach und wie sieht das aus wenn ich die Liste mit new erzeugen möchte? Da fordert der dann von mir die oben angesprochenen Allocatoren.



  • normalerweise brauchst du mit den allocatoren nicht rummachen, da gibts defaultdinger.
    du verwechselst die begriffe klasse und instanz. du erzeugst hier ein temporaeres objekt, was in die liste kopiert und dann zerstoert wird. wenn du das noch konfigurieren musst, dann

    Klasse a;
    a.setValue(4);
    list.push_back(a);
    

    oder die wichtigen parameter dem konstruktor uebergeben, dann kriegst dus in einer zeile hin.
    wenn du die objekte nachtraeglich noch veraendern willst, bietet sich eine list<Klasse*> an, da merkst du dir halt die pointer und kannst die objekte weitermanipulieren. fuer sowas nimmt man auch gern smart pointer.


Anmelden zum Antworten