2015-12-02 14 views
5

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?

+0

Si consiglia di aggiungere un segnalibro a questo sito: http://en.cppreference.com/w/ per uso futuro. –

risposta

6

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.

1

std::copy_backwards fa:

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.

std::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.

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.