iterator (list) in der mitte beginnen?
-
über die funktionen .begin() und .end() kann ich ja das start/end element der list für den iterator start wert angeben. Wenn ich nun eine Zeiger auf irgendwein objekt der Liste habe, kann ich dann den iterator start wert auf diese Objekt setzen?
-
klar kann man, ist ganz einfach.
list<int>::iterator iterIrgendwo = m.begin() + 23;
-
BorisDieKlinge schrieb:
über die funktionen .begin() und .end() kann ich ja das start/end element der list für den iterator start wert angeben. Wenn ich nun eine Zeiger auf irgendwein objekt der Liste habe, kann ich dann den iterator start wert auf diese Objekt setzen?
Nur wenn du den Index von diesem Objekt ebenfalls hast.
-
thordk schrieb:
klar kann man, ist ganz einfach.
list<int>::iterator iterIrgendwo = m.begin() + 23;Das klappt vielleicht bei einem vector, aber der List-Iterator definiert keinen operator+. Die Alternative dazu wäre:
list<int>::iterator irgendwo = m.begin(); advance(irgendwo,23);
-
ok, habs nicht getestet. dachte alle iteratoren verhielten sich gleich.
-
thordk schrieb:
dachte alle iteratoren verhielten sich gleich.
Nein, da gibt es Abstufungen nach "Mächtigkeit" (die primitiveren können noch nicht einmal dekrementiert werden).