Tengo un objeto que quiero viajar en un bucle continuo en un juego. Tengo una serie de coordenadas en un std::vector
que quiero usar como waypoints.¿La manera más fácil de hacer un iterador cíclico (circulador)?
¿Hay alguna manera de hacer un std::vector<T>::iterator
cíclico (también conocido como circulador)?
Lo mejor que se me ocurre es tener dos iteradores y cada vez que se agote el primer iterador le asigno el valor del segundo (que no se usaría para hacer otra cosa) pero ni siquiera estoy seguro de que funcionará: ¿el operador de asignación copiará lo que sea que el iterador esté usando para mantener el índice o simplemente se lo referenciará (y por lo tanto será inútil después de la segunda ronda)?
Quiero que el objeto recorra el waypoint para siempre (a menos que se destruya pero eso no sucede en ese método), pero el iterador solo se llamará una vez para cada fotograma y debe regresar para que pueda actualizar el otro objetos en el juego.
La solución debe funcionar en el compilador gcc y microsoft (si no es posible escribirlo en C++ estándar).
He escrito un iterador como ese, así que es definitivamente posible =) El único giro que recuerdo es que el operador de comparación
Por otro lado, ¿realmente necesita 'operator '? ¡Es un poco travieso ocultar el comportamiento cíclico! –