Wieso segfaulted mein Programm? (iteratoren)



  • Hi,

    folgender Code is gegeben:

    std::string MyClass::something(const std::string& s)
    {
    std::string toReturn = "TEST";
    std::vectorstd::string::const_iterator iterHeader;
    iterHeader = meinTollerVector.begin();
    toReturn += *iterHeader;
    ++iterHeader;
    std::vectorstd::string::const_iterator iterEnd = meinTollerVector.end();
    while(iterHeader != meinTollerVector.end())
    {
    toReturn += ", " + *iterHeader;
    ++iterHeader;
    }
    return toReturn;
    }

    meinTollerVector = std::vectorstd::string

    Ich hab echt keinen blassen schimmer wieso er segfaulted. Er will einmal zu viel in die while schleife rein.

    Der vector enthält mehr als 2 elemente.



  • Bei einem leeren Vektor ist v.begin() == v.end(). Du bewegst den Iterator über
    das Ende hinaus, bevor die Schleife beginnt. Zu diesem Zeitpunkt ist die Position
    des Iterators schon undefiniert, sozusagen v.end()++.



  • Du hast auch nur gesagt, dass du was gesagt hast oder?

    "Der vector enthält mehr als 2 elemente."


Anmelden zum Antworten