std::list == linked list ?



  • abend!

    ich hab ein kleines programm, welches in C geschrieben ist. dieses möchte ich jetzt nach C++ portieren.

    das ganze hab ich schon soweit hinbekommen, da im alten programm die variablen zum großteils global waren hab ich eine klasse gemacht.

    so, bei der singly-linked-list hab ich mir gedacht, ich könnte std::list nehmen.
    aber wie?

    struct mylist
    {
       char* name ;
       struct mylist* next ;
    };
    
    mylist* list = new mylist ;
    mylist->name = new char ;
    //...
    

    Wie könnte man das mit std::list machen?



  • #include <list>
    #include <string>
    
    using std::list;
    using std::string;
    
    int main()
    {
      list<string> namen;
      namen.push_back("Heinz");
      namen.push_back("Uwe");
    }
    


  • das hier:

    mylist* list = new mylist ;
    mylist->name = new char ;
    

    sieht sehr komisch aus - so, als ob du zumindest in der zweiten zeile was ganz anderes machen wölltest...

    struct mylist* next ; das struct brauchst du in C++ nicht mitschreiben...

    es würde so aussehen:

    #include <list>
    #include <string>
    
    int main()
    {
      std::list< std::string > liste;
    
      liste.push_back("hallo welt!");
      liste.push_back("hallo du!");
    }
    

    std::list ist üblicherweise eine double-linked-list - aber das sollte dich als anwendet nicht weiter interessieren...

    allerdings solltest du beachten, dass du noch lang kein c++ kannst, nur weil du c kannst - du solltest dir also lieber ein c++ buch kaufen als per try and error alles auszuprobieren - und damit voll hässlichen code zu produzieren...

    bb


Anmelden zum Antworten