copy_if It is primarily intended for copying a range into another range / container. Ie, by its nature, the nature of the algorithm is to copy elements that satisfy a certain condition to another (non-overlapping) range or to a new container.
remove_if , ; , . ; erase, :
std::vector<int> vec { 1, 2, 3, 4 };
vec.erase(std::remove_if(std::begin(vec),
std::end(vec),
[](int i) { return i <= 2; }),
std::end(vec));
++, erase-remove.
copy_if, copy , , , copy_backward;
d_first [first, last), std:: copy_backward std:: copy.