Problem Vector
-
Bekomme leider keine ausgaben der Daten, weiß nicht warum.
Er soll den Vector ab pos 3 paarweise ausgeben:int it; for (it = 3; it == maindata.size(); ++it) { cout << maindata.at(it) <<endl; ++ it; cout << maindata.at(it) <<endl; }
-
habe es
for (it=maindata.begin()+3; it != maindata.end(); ++it) { cout << *it <<endl; ++ it; cout << *it <<endl; }
-
it==maindata.size()
wird nur war für den fall das it wirklich gleich maindata.size() ist.
richtig:it!=maindata.size()
Schreibfehler?
besser ist iteratoren zu verwenden.
edit: genau so
-
Fencer schrieb:
edit: genau so
Nein, nicht genau so.
Dieser Code
for (it=maindata.begin()+3; it != maindata.end(); ++it) { cout << *it <<endl; ++ it; cout << *it <<endl; }
ist unsicher, da du den Iterator zwei mal erhöhst, ohne zwischendurch die Schleifenbedingung zu prüfen. Ein
end()
-Iterator, der weiter inkrementiert wird, führt zu undefiniertem Verhalten. Vom anschliessenden Dereferenzieren ganz zu schweigen.Also schreibe einfach
for (it=maindata.begin()+3; it != maindata.end(); ++it) { cout << *it << endl; }
, ich sehe sowieso keinen Grund für die zweifache Ausgabe innerhalb des Schleifenrumpfes. Abgesehen davon musst du sicherstellen, dass
maindata.begin()+3
immer ein gültiger Iterator ist, also genügend Elemente im Container vorhanden sind.
-
ah... stimmt. sorry