sto scrivendo un iterator
(in realtà è const_iterator
per il mio oggetto corrente, e voglio anche creare un reverse_const_iterator
anche.C++ iteratore e invertire iteratore
mi sono guardato intorno, per vedere come fare questo e io imbattuto this:.
Avviso tuttavia che quando un iteratore viene invertito, la versione invertita non punta allo stesso elemento della gamma, ma a quello precede Questo è così, al fine di organizzare per il passato l'elemento di un intervallo: An it l'erator che punta a un elemento passato-fine in un intervallo, quando invertito, viene modificato in modo che punti all'ultimo elemento (non passato) dell'intervallo (questo sarebbe il primo elemento dell'intervallo se invertito). E se un iteratore del primo elemento di un intervallo è invertito, l'iteratore invertito punta all'elemento prima del primo elemento (questo sarebbe l'elemento passato-fine dell'intervallo se invertito).
È questo ciò che succede dal punto di vista degli utenti, o quando si dereference un reverse_iterator
lo fa non astratta questa via dando il valore/di riferimento dell'oggetto che si pensa si sta puntando? Questo è solo un dettaglio di implementazione?
mia comprensione è:
for(i = obj.rbegin(); i != obj.rend(); i++)
era equivalente a
for(i = obj.begin(); i != obj.end(); i++)
tranne che in senso inverso. E così *i
tornerebbe indietro nel contenitore nel primo caso e andrà avanti attraverso il contenitore nel secondo caso. Il mio istinto è corretto?
Funziona. –
Come nota a margine: quando si lavora con gli iteratori si dovrebbe sempre usare il pre-incremento ('++ i') invece del post-incremento poiché può essere più efficiente. –