Kurzes Testprogramm verwirrt mich stark ...



  • Hallöchen,

    folgender Code:

    //test.cpp
    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    void druckVektor(const vector<int> &vc)
    {
       cout << "Vektorsize: " << vc.size() << endl;
       cout << "Vektorinhalt: ";
       for(int i = 0; i < vc.size(); ++i)
          cout << i << ' ';
    
       cout << endl;
    
    }
    
    int main(void)
    {
       vector<int> vc;
    
       for(int i = 0; i < 4; ++i)
       {
          vc.push_back(i);
          vc.push_back(i);
       }
    
       druckVektor(vc);
    }
    

    compiliert mit:
    g++ test.cpp -o test.exe

    erzeugt bei mir folgende Ausgabe:
    Vektorsize: 8
    Vektorinhalt: 0 1 2 3 4 5 6 7

    statt wie erwartet:
    ...
    Vektorinhalt: 0 0 1 1 2 2 3 3

    Was verstehe ich hier nicht?



  • Du gibst die Laufvariable statt des Vektorinhalts aus. Ich hoffe, das beseitigt deine Verwirrung etwas.



  • als kleiner wink mit dem zaunpfahl:

    einzelne vector-elemente sprichst du zb mit "vectorname.at(index) an
    oder direkt mit vectorname[index]

    gruß Jann

    edit: vertippt



  • Mein Gott, Ihr werdet es nicht glauben:
    Ich war dermaßen blind, daß ich mir eine Klasse von vector abgeleitet habe, um zu prüfen, was beim push_back() ankommt. Da war natürlich alles korrekt. Dann bin ich zur Toilette gegangen, und als ich da saß, da fiel es mir wie Schuppen aus den Haaren ...

    Ich hoffe, Ihr habt Euch nicht über die Zeitverschwendung wegen meiner Blödheit geärgert, sondern konntet Euch über so einen Blackout ein bißchen amüsieren.

    Danke an alle, die auf den Quatsch noch eine ernste Antwort geschrieben haben.

    Belli



  • hey belli,
    im nachhinein kann ich schon darüber schmunzeln 😉
    es hätte ja auch unwissen sein können 😃


Anmelden zum Antworten