Chcę zainicjować iterator (dowolnego rodzaju) z następcą innego iteratora (tego samego rodzaju). Poniższy kod działa z przypadkowymi iteratorów dostępu, ale nie jest on z przodu lub iteratorów dwukierunkowych:Następca iteratora
Iterator i = j + 1;
Prosty obejście jest:
Iterator i = j;
++i;
Ale to nie zadziała jak startowe stament z pętla for. Mógłbym użyć szablonu funkcję tak:
template <typename Iterator>
Iterator succ(Iterator it)
{
return ++it;
}
a następnie używać go tak:
Iterator i = succ(j);
Czy jest coś takiego w STL lub Boost czy jest tam jeszcze lepszym rozwiązaniem I nie jestem świadomy?
Mówisz, że 'Iterator i = j; ++ i; 'nie jest możliwe wewnątrz pętli' for' - czy możesz ją rozwinąć? Powinien działać dobrze w pętli 'for'. –
@Michael: Miałem na myśli miejsce 'x' w' for (x; y; z) ', nie wewnątrz samej pętli. – fredoverflow
Widzę; to ma sens. –