2015-12-02 9 views
5

Czytam podkład C++ i widzę te dwie funkcje, które wydają się mieć tę samą funkcjonalność. Czy ktoś mógłby mi pomóc i powiedzieć, jaka jest różnica między tymi dwoma? Dzięki.Różnica między copy_backward i reverse_copy?

+0

Powinieneś dodać zakładkę do tej strony: http://en.cppreference.com/w/ do przyszłego użytku. –

Odpowiedz

6

reverse_copy faktycznie umieszcza elementy w odwrotnej kolejności.

1 2 3 4 5 - > 5 4 3 2 1 

copy_backward prostu kopiuje elementy tyłu, ale zachowuje swój względny porządek.

1 2 3 4 5 

5 jest kopiowany jako pierwszy, ale umieszczany w ostatnim miejscu. Więc wyjście jest nadal:

1 2 3 4 5 

http://en.cppreference.com/w/cpp/algorithm/copy_backward

Kopiuje elementy z zakresu zdefiniowane przez [pierwsza, ostatnia) do innego zakresu kończąc na d_last. Elementy są kopiowane w odwrotnej kolejności (ostatni element jest najpierw kopiowany), , ale ich względna kolejność zostaje zachowana.

http://en.cppreference.com/w/cpp/algorithm/reverse_copy

kopii elementy z przedziału [najpierw ostatni) w innym zakresie d_first rozpoczynającą się w taki sposób, że element w nowej serii są w odwrotnej kolejności.

1

std::copy_backwards służy:

kopiuje elementy z zakresu, zdefiniowane [pierwsze, na końcu), na inny zakres, kończący się d_last. Elementy są kopiowane w odwrotnej kolejności (ostatni element jest najpierw kopiowany), ale ich względna kolejność zostaje zachowana.

std::reverse_copy

kopii elementy z przedziału [najpierw ostatni) w innym zakresie d_first rozpoczynającą się w taki sposób, że element w nowej serii są w odwrotnej kolejności.

Więc różnica jest taka, że ​​std::copy_backwards początek kopiowanie na końcu i działa wstecz, zachowując pierwotną pozycję, natomiast std::reverse_copy rozpocznie kopiowanie na początku posuwają się do przodu, ale umieszcza je w odwrotnej kolejności.