Quiero inicializar un iterador (de tipo arbitrario) con el sucesor de otro iterador (del mismo tipo). El siguiente código funciona con iteradores de acceso aleatorio, pero falla con avance o iteradores bidireccionales:iterator successor
Iterator i = j + 1;
Una solución sencilla es:
Iterator i = j;
++i;
Pero eso no funciona como el init-stament de un bucle for. Podría utilizar una plantilla de función como la siguiente:
template <typename Iterator>
Iterator succ(Iterator it)
{
return ++it;
}
y luego usarlo como esto:
Iterator i = succ(j);
¿Hay algo parecido en la STL o Boost, o hay una solución aún mejor me no estoy al tanto?
Usted dice que 'Iterator i = j; ++ i; 'no es posible dentro de un bucle' for' - ¿puedes ampliar eso? Debería funcionar bien en un bucle 'for'. –
@Michael: quise decir el lugar 'x' en' for (x; y; z) ', no dentro del propio cuerpo del bucle. – fredoverflow
Veo; eso tiene sentido. –