- 166
- 7
- CPU
- Ryzen 5 1600 3.2GHz
- Scheda Madre
- MSI B350 Tomahawk
- HDD
- Seagate ST1000DM010 1 TB
- RAM
- 2X8GB Corsair CMK16GX4M2B3000C15 Vengeance
- GPU
- RADEON RX 580 NITRO+ Radeon RX 580 8GB GDDR5
- Monitor
- HP 27FW Monitor 27"
- PSU
- Cooler Master MasterWatt Lite 700 230V
- Case
- Aerocool Aero-800
- OS
- Windows 10
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?