elemente im vector ablegen



  • hallo, ich habe folgendes problem:

    ich will einen array durchgehen und die anzahl der elemente zählen ungleich null und die dann in einem 2dim-vector ablegen und zwar so, dass bei

    v[0]=alle arrays mit einträgen nur null
    v[1]=alle arrays mit einem eintrag nur null
    usw

    abgelegt sind
    mein versuch ist folgender aber da klappt was nicht

    vector<vector<string> > vec ;
       for(i=0;i<n;i++)
          vec.push_back(vector<string>());
       vec.resize(n); 
    do{
    int x=0;
    funktion(array);
    //array wird hier verändert
    for (i=0;i<n;i++) 
    {
    if(array[i]==1)
    {
    x++;
    str << i+1; //ich brauche die genaue stelle...
    }
    }
    vec.at(x).push_back(str.str()); //alternativ auch mit vec[x]... versucht, ohne erfolg
    
    }while(abbruch);
    

    also am array verändern und am while kriterium kann es natürlich nicht liegen, deshalb habe ich mir und euch diesen code erspart.
    aber mir stellt sich die frage, ob ich so mit einem vector umgehen kann (an verschiedenen stellen ablegen)

    vielen dank für eure hilfe



  • "da klappt was nicht" ist keine ausreichende Fehlerbeschreibung.

    Was soll überhaupt v sein? Dein vector heißt vec.



  • ja natürlich tut mir leid.

    das programm bricht einfach ab und es liegt an der zeile mit vec.at(x).push_back, also denke ich, dass es ein problem ist, wenn ich pro durchgang in verschiedenen vectoren die elemente ablegen will...



  • cofriga schrieb:

    das programm bricht einfach ab

    Ohne irgendeine Fehlermeldung? Auch nicht im Debugger? Erstaunlich.

    Was genau ist denn array?



  • hast du versucht zu debuggen?
    kann sein das eine exception beim vector zugriff durch at(..) geworfen wird.
    simon



  • "this application has requested the runtime to terminate it in an unusual way"

    das ist die fehlermeldung.

    array ist ein array mit n einträgen



  • hast du versucht zu debuggen?
    denn da würde dir der debugger sehr hilfreich sein.
    simon



  • cofriga schrieb:

    "this application has requested the runtime to terminate it in an unusual way"

    das ist die fehlermeldung.

    array ist ein array mit n einträgen

    Das ist eine Exception die von Deinem Zugriff mit at(x) geworfen wird. Scheiss mal das resize(n) raus.



  • Tachyon schrieb:

    cofriga schrieb:

    "this application has requested the runtime to terminate it in an unusual way"

    das ist die fehlermeldung.

    array ist ein array mit n einträgen

    Das ist eine Exception die von Deinem Zugriff mit at(x) geworfen wird. Scheiss mal das resize(n) raus.

    Muss nicht sein... kann aber...



  • habe ich versucht, ohne erfolg.
    dass es genau an dieser zeile liegt, wusste ich ja vorher, auch wenn ich mich vielleicht nicht allzu deutlich ausgedrückt habe, aber ich weiß eben nicht, wieso es an diesem aufruf liegt, oder übersehe ich etwas offensichtliches?



  • benutzt du einen debugger?



  • simon.gysi schrieb:

    benutzt du einen debugger?

    nein habe ich bisher noch nie.
    habe es bisher immer auf die "naive" art lösen können



  • Na dann ist jetzt der Moment, mit dem Debuggen anzufangen. Oder bau halt ein try/catch um die Zeile und gib aus, was in der Exception steht.



  • Tachyon schrieb:

    ...Scheiss mal das resize(n) raus.

    😃 😃 😃 🤡
    Sorry .... schöner Vertipper.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Tachyon schrieb:

    ...Scheiss mal das resize(n) raus.

    😃 😃 😃 🤡
    Sorry .... schöner Vertipper.

    Gruß,

    Simon2.

    Jo, das war wohl ein Griff ins Klo. 🤡

    @cofriga
    Wieso belegst Du die Elemente für vec eigentlich so kompliziert vor? Das geht doch recht einfach direkt beim Kontruieren!?!

    std::vector<std::vector<std::string> > vec(n, std::vector<std::string>());
    

Anmelden zum Antworten