Darstellung eines Zeilenvektors



  • Hallo zusammen!

    Ich bin blutiger Anfänger in C++ und beschäftige mich gerade mit Vektoren.

    Mein Ziel ist es, einen einfachen Zeilenvektor im Format (1, 2, 3) auszugeben, wenn möglich mittels eines Iterators. Mein Ansatz dazu war:

    for (auto it : myVec)
        {
            if (it == myVec[0])
            {
                std::cout << "(";
            }
            std::cout << it;
            if (it != myVec[myVec.size()-1])
            {
                std::cout << ", ";
            }
            if (it == myVec[myVec.size()-1])
            {
                std::cout << ")";
            }
        }
    

    Das ganz funktionierte am Anfang nicht schlecht, dann habe ich allerdings versucht, den Vektor (0, 0, 0) damit auszugeben und bin darauf gekommen, dass der Spaß natürlich nicht funktioniert, wenn die Werte nicht alle unterschiedlich sind. Mit der Zeile

    if (it == myVec[0])
    

    würde ich gerne dem Programm sagen, dass es prüfen soll, ob sich der Iterator gerade an der ersten Stelle des Vektors befindet, analog für die anderen Bedingungen.

    Für Hilfe wäre ich außerordentlich dankbar!

    Beste Grüße!



  • @Helix34 sagte in Darstellung eines Zeilenvektors:

    Mein Ansatz dazu war:

    Ohne die Definition von myVec ist der „Ansatz“ ziemlich dünn.



  • @Helix34
    Was hältst Du von dieser Vorgehensweise?

    string trenner {""};
    cout << '(';
    for(auto it : myVec)
    {
       cout << trenner;
       trenner = ", ";
       cout << it;
    }
    cout << ')';
    

    Besser noch (mit Iterator) - ungetestet:

    string trenner {", "};
    cout << '(';
    auto it = myVec.begin();
    if(it != myVec.end())
    {
       cout << *it;
       while(++it != myVec.end())
       {
          cout << trenner;
          cout << *it;
       }
    }
    cout << ')';
    


  • @Belli Danke vielmals, ich hab die zweite Variante ausprobiert und das funktioniert toll!


Log in to reply