Sto leggendo il primer C++ e ho visto queste due funzioni che sembrano avere la stessa funzionalità. Qualcuno potrebbe aiutarmi e dirmi qual è la differenza tra i due? Grazie.Differenza tra copy_backward e reverse_copy?
risposta
reverse_copy
mette effettivamente gli elementi in ordine inverso.
1 2 3 4 5 - > 5 4 3 2 1
copy_backward
copia semplicemente gli elementi indietro, ma conserva il loro ordine relativo.
1 2 3 4 5
5 viene prima copiato, ma inserito nell'ultimo punto. Così la vostra uscita è ancora:
1 2 3 4 5
http://en.cppreference.com/w/cpp/algorithm/copy_backward
Copia gli elementi della gamma, definiti da [primo, ultimo), per un altro intervallo che termina a d_last. Gli elementi vengono copiati nell'ordine inverso (l'ultimo elemento viene copiato per primo), ma il loro ordine relativo viene mantenuto.
http://en.cppreference.com/w/cpp/algorithm/reverse_copy
Copie gli elementi della gamma [first, last) ad un altro intervallo che parte da d_first in modo tale che gli elementi della nuova gamma sono in ordine inverso.
Copia gli elementi della gamma, definiti da [first, last), ad un altro intervallo termina a d_last. Gli elementi vengono copiati nell'ordine inverso (l'ultimo elemento viene copiato per primo), ma il loro ordine relativo viene mantenuto.
Copie gli elementi della gamma [first, last) ad un altro intervallo che parte da d_first in modo tale che gli elementi della nuova gamma sono in ordine inverso.
Quindi la differenza è che std::copy_backwards
inizio la copia alla fine e lavora a ritroso, mantenendo il posizionamento originale, mentre std::reverse_copy
inizia a copiare all'inizio andando avanti, ma li mette in ordine inverso.
Si consiglia di aggiungere un segnalibro a questo sito: http://en.cppreference.com/w/ per uso futuro. –