Von Liste zu Liste



  • Hi,

    folgendes Problem, ich habe 2 Listen mit Namen

    std::list<std::string> namen_eins;
    
    namen_eins.push_back ("alfonso");
    namen_eins.push_back ("diabloi");
    namen_eins.push_back ("fritz");
    
    std::list<std::string> namen_zwei;
    namen_zwei.push_back ("fred");
    namen_zwei.push_back ("holla die waldfee!");
    

    Meine Frage ist jetzt: wie bekomme ich jetzt die Daten von "namen_eins" nach "namen_zwei" ohne die von "namen_zwei" zu überschreiben?

    Also sogesehen einfach "hinten dran" hängen.

    Gibt leider keine Funktion append. 😞



  • for(std::list<std::string>::iterator it= namen_zwei.begin(); it != namen_zwei.end(); it++)
     namen_eins.push_back(*it);
    

    aber ich glaube es gibt sogar ne funktion append oder so...



  • Hallo,

    So z.Bsp.

    namen_zwei.insert(namen_zwei.end(), namen_eins.begin(), namen_eins.end());
    


  • Willst du die Elemente kopieren oder umschichten? Kopieren kannst du mit copy() und einem back_inserter, umschichten mit splice():

    //kopieren:
    std::copy(namen_eins.begin(),namen_eins.end(),back_inserter(namen_zwei));
    //die manuelle Version für Puristen:
    for(std::list<std::string>::iterator p=namen_eins.begin();p!=namen_eins.end();++p)
      namen_zwei.push_back(*p);
    
    //umschichten:
    namen_zwei.splice(namen_zwei.end(),namen_eins);
    

Anmelden zum Antworten