Ich möchte einen Iterator (beliebiger Art) mit dem Nachfolger eines anderen Iterators (der gleichen Art) initialisieren. Der folgende Code arbeitet mit wahlfreiem Zugriff Iteratoren, aber es funktioniert nicht mit nach vorn oder bidirektionale Iteratoren:Iterator-Nachfolger
Iterator i = j + 1;
Eine einfache Abhilfe ist:
Iterator i = j;
++i;
Aber das funktioniert nicht als init-abgetan von eine for-Schleife. Ich konnte eine Funktionsschablone wie folgt verwendet werden:
template <typename Iterator>
Iterator succ(Iterator it)
{
return ++it;
}
und es dann wie folgt verwenden:
Iterator i = succ(j);
Gibt es so etwas in den STL oder Boost, oder gibt es eine noch bessere Lösung, die ich bin mir dessen nicht bewusst?
Sie sagen, dass Iterator i = j; ++ i; 'ist in einer' for' -Schleife nicht möglich - kannst du das erweitern? Es sollte in einer 'for' Schleife gut funktionieren. –
@Michael: Ich meinte die Stelle 'x' in' für (x; y; z) ', nicht innerhalb des Schleifenkörpers selbst. – fredoverflow
Ich verstehe; Das macht Sinn. –