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."