Iterador C ++ e iterador inverso

Estoy escribiendo uniterator (en realidad esconst_iterator para mi objeto actual, y quiero también crear unreverse_const_iterator además.

Miré a mi alrededor, para ver cómo hacer esto y me tropecéesta:

Sin embargo, tenga en cuenta que cuando se invierte un iterador, la versión invertida no apunta al mismo elemento en el rango, sino al que lo precede. Esto es así, para organizar el elemento pasado-final de un rango: un iterador que apunta a un elemento pasado-final en un rango, cuando se invierte, se cambia para apuntar al último elemento (no se pasa) ) del rango (este sería el primer elemento del rango si se invierte). Y si se invierte un iterador para el primer elemento en un rango, el iterador invertido apunta al elemento antes del primer elemento (este sería el elemento pasado del extremo del rango si se invierte).

¿Es esto lo que sucede desde la perspectiva de los usuarios, o cuando usted desreferencia unareverse_iterator no abstrae esto dándole el valor / referencia del objeto quepensar está apuntando a? ¿Esto es solo detalle de implementación?

Mi entendimiento fue:

for(i = obj.rbegin(); i != obj.rend(); i++)

era equivalente a

for(i = obj.begin(); i != obj.end(); i++)

excepto al revés. Y entonces*i retrocedería a través del contenedor en el primer caso, y avanzaría a través del contenedor en el segundo caso. ¿Mi instinto es correcto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta