copy_backward和reverse_copy之间的差异

Difference between copy_backward and reverse_copy?

本文关键字:copy reverse backward 之间      更新时间:2023-10-16

我正在阅读C++入门,看到这两个函数似乎具有相同的功能。有人能帮忙告诉我这两者有什么区别吗?谢谢

reverse_copy实际上是按相反的顺序放置元素。

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

copy_backward只是向后复制元素,但保留它们的相对顺序。

1 2 3 4 5 

5是先复制的,但放在最后一个位置。所以你的输出仍然是:

1 2 3 4 5

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

将由[first,last)定义的范围中的元素复制到以d_last结尾的另一个范围。元素按相反顺序复制(最后一个元素先复制),但保留其相对顺序

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

将范围[first,last)中的元素复制到从d_first开始的另一个范围,使新范围中的元素按相反顺序排列。

std::copy_backwards执行:

将元素从[first,last)定义的范围复制到以d_last结尾的另一个范围。元素按相反顺序复制(最后一个元素先复制),但保留其相对顺序。

std::reverse_copy

将范围[first,last)中的元素复制到从d_first开始的另一个范围,使新范围中的元素按相反顺序排列。

因此,不同之处在于,std::copy_backwards从最后开始复制,并向后工作,保持原始位置,而std::reverse_copy从开始开始复制,但将它们按相反的顺序排列。