std::copy_backwards :
Copy elements from the range defined by [first, last] to another range ending in d_last. Elements are copied in the reverse order (the last element is copied first), but their relative order is preserved.
std::reverse_copy
Copies elements from the range [first, last] to another range starting with d_first so that the elements in the new range are in reverse order.
Thus, the difference is that std::copy_backwards starts copying at the end and works in the opposite direction, preserving the original positioning, while std::reverse_copy starts copying at the beginning forward, but puts them in the reverse order.
source share