2015-12-02 37 views
5

我正在閱讀C++ primer,看到這兩個函數似乎具有相同的功能。任何人都可以幫助並告訴我兩者有何區別?謝謝。copy_backward和reverse_copy之間的區別?

+0

您應該將此網站加入書籤:http://en.cppreference.com/w/供將來使用。 –

回答

6

reverse_copy實際上是將元素倒序排列。

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

copy_backward只是向後複製元素,但保留了它們的相對順序。

1 2 3 4 5 

5先被複制,但放在最後一個位置。所以,你的輸出仍然是:從範圍在d_last結束

1 2 3 4 5 

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

複製元素,通過[第一,最後定義),另一個範圍。元素按相反順序複製(最後一個元素先被複制),,但它們的相對順序保留爲

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

副本從範圍[第一,最後的元素)到另一個範圍以這樣的方式,在新的範圍的元素是按相反的順序在d_first開始。

1

std::copy_backwards作用:

副本從所述範圍中的元素,通過[第一,最後所定義的),以結束d_last另一個範圍。元素以相反順序複製(最後一個元素先被複制),但是它們的相對順序被保留。

std::reverse_copy

副本從範圍[第一,最後的元素)到另一個範圍以這樣的方式,在新的範圍的元素是按相反的順序在d_first開始。

所以不同的是,std::copy_backwards開始複製在結束工作向後,保持原來的位置,而std::reverse_copy開始之初前進複製,而是把它們以相反的順序。