Struktur initialisieren



  • hi ich möchte ganz gerne folgende Struktur initialisieren

    struct test{
    bool wert;
    std::list<int> liste
    };
    test *speicher = new test[100];
    dafür wollte ich den Befehl memset verwenden, was alledings nicht funktioniert.
    Nach kurzer Suche bin ich auf den Befehl std::copy gestossen meine Frage ist nun wie wende ich das std::copy darauf an.



  • vielleicht solltest du der struktur einen konstruktor verpassen.
    alternativ gibt es noch die algorithmen fill und generate (bzw. fill_n und generate_n) zum nachträglichen füllen mit werten.



  • danke das mit dem konstruktor klingt gut +einfach:-) Wie implementiere ich mir denn für die Struktur nen Iterator damit ich std::copy oder std::fill andwenden kann???



  • struct test{
    bool wert;
    std::list<int> liste
    
    test () : wert(false) { liste.push_back(42); } //wie auch immer
    };
    
     test *speicher = new test[100];  //alle test[x].wert sind false
    //und alle liste haben ein element mit wert 42
    
    //mit fill:
    fill_n(speicher,100,vorlage); //wobei immter speicher[x] = vorlage; geschieht
    


  • also mein erstes problem ist gelöst beim zweiten hab ich mich wohl schlecht ausgedrückt. ich möchte den speicherbereich den das Array belegt in nen neuen größeren kopieren. Nun muss man dafür aber Iteratoren angeben damit man std::copy benutzen kann, denn memcpy geht ja leider nicht!!

    im voraus danke



  • Zeiger sind Iteratoren. Dh du kopierst ungefähr so (weiterhin unter der Annahme, dass dein Quell-Array 100 Einträge hat):

    test * ziel = new test[200]; // größer als quell halt
    copy(quell, quell +100, ziel);
    

Log in to reply