Problem mit std::vector



  • naja klar ist es iwo ein fehler in meinem code aber unterwelchen umständen kann denn test.size() == -1 sein ?! da begreife ich einfach nicht....

    hier kann ich mal das schema meines codes verdeutlichen:

    //pseudo 
    
    func1(vector<int> &v_int)
    {
        for(15 mal)
          v_int.push_back(for-index);
    }
    
    func2(vector<int> &v_int2)
    {
        func1(v_int2);
    }
    
    int main()
    {
       vector<int> i;
    
       func2(i);
    
       cout << i.size();
    }
    

    Ich kann mir das ehrlich gesagt auch nicht erklären ...



  • Welcher Compiler? Welche Std-Lib-Implementierung? Wird ja dann wohl eher dort der Fehler drin sein.



  • Bei mir funzt es. Schreibst du irgendwo evtl. außerhalb der Grenzen des Vektors herum?



  • #include <iostream>
    #include <vector>
    using namespace std
    

    compiler : Dev-C++

    Wie meinst du das außerhalb ?
    Meinst ob ich ein Element anspreche das nicht existiert oder meisnt du ob ich die capazität überschreite ?



  • Ist doch das gleiche. Gib doch einmal an allen möglichen Stellen die Größe des Vektors aus, dann findest du doch schnell die "böse" Stelle. Angefangen bei der Deklaration bis hin zu der jetzigen Ausgabe. Oder nimm einen Debugger...



  • ok werd ich machen .. mal sehen wer der übertäter ist xD

    danke



  • keine chance... die stelle die den fehler veruhrsacht hat nichts!! mit dem vector zu tun.. scheint ein ziemlich heftiger bug zu sein... wenn ich den vector mit einem iterator durchzähle läuft alles... und die size stimmt auch ... das is doch krank
    xD

    Gruß Chris



  • Foxx90 schrieb:

    ... die stelle die den fehler veruhrsacht hat nichts!! mit dem vector zu tun..

    Ist typisch.
    Oftmals merkt man gar nicht "vor Ort", wenn man "Löcher in den Speicher reisst", sondern erst wo ganz anders (bei uns sorgte mal ein fehlendes memset() dafür, dass in einem ganz anderen Modul ein printf() schief ging).

    Gruß,

    Simon2.



  • oh das ein beunruhigender gedanke xD 😉
    hmm.. naja ich werde mal weiter forsten...
    danke.. ich konnte mir nur nicht erklären wie die size von vector -1 sein kann xD

    meine vermutung war folgende:

    wenn ich eine referenz zu einem vector erstelle und dieses referenz nach verlasse3n des scopes zerstört wird... tritt ja der desstructor in spiel und weil die beiden vectoren ja durch eine referenz "verbunden" sind, dachte ich dass auch das andere object zerstört wird ...

    aber fehlanzeige mein beispiel code ob ging ja ..



  • Eine Referenz ist auch nur ein spezieller Pointer. Also keine Gefahr von wegen Destruktoren.


Anmelden zum Antworten