Alessandro001
Utente Attivo
- Messaggi
- 166
- Reazioni
- 7
- Punteggio
- 44
Salve, stavo guardando la funzione reverse su cplusplus ed ho notato una cosa che non mi è chiara.
Esordisco dicendo che ho poca dimestichezza con gli iteratori che al più presto studierò.
La funzione reverse ha questi parametri (str.begin(), str.end()) quindi rispettivamente il puntatore alla prima cella su cui applicare il metodo ed il puntatore all'ultima cella+1 su cui applicare il metodo.
Quindi se la stringa è "Ciao" str.begin() punterà a C mentre str.end() punterà subito dopo o.
Nel metodo reverse viene richiamata la funzione swap con parametri (first, last).
Dato che la funzione swap non fa altro che scambiare di posizione i valori passati, il valore puntato da first diventerà il valore puntato da last e viceversa. Però last è uguale all'ultima cella+1 pertanto come fa a scambiare i due valori?
Mi spiego con un esempio:
Se la stringa è S = "ciao"
first punterà a 'c' e last punterà ad 'o'+1
quando invocherà il metodo swap come fa a scambiare 'c' con 'o' se last non punta ad o?
Esordisco dicendo che ho poca dimestichezza con gli iteratori che al più presto studierò.
La funzione reverse ha questi parametri (str.begin(), str.end()) quindi rispettivamente il puntatore alla prima cella su cui applicare il metodo ed il puntatore all'ultima cella+1 su cui applicare il metodo.
Quindi se la stringa è "Ciao" str.begin() punterà a C mentre str.end() punterà subito dopo o.
Nel metodo reverse viene richiamata la funzione swap con parametri (first, last).
Dato che la funzione swap non fa altro che scambiare di posizione i valori passati, il valore puntato da first diventerà il valore puntato da last e viceversa. Però last è uguale all'ultima cella+1 pertanto come fa a scambiare i due valori?
Mi spiego con un esempio:
Se la stringa è S = "ciao"
first punterà a 'c' e last punterà ad 'o'+1
quando invocherà il metodo swap come fa a scambiare 'c' con 'o' se last non punta ad o?