Remove from a range of values all values that
match a give value or satisfy a predicate
remove_copy(i,i,o,&)
remove_copy_if(i,i,o,upred)
Copy a range of values, removing all values
that match a given value.
These algorithms cannot be used with associative containers such as
std::set and std::map because ForwardIt does not dereference to a
MoveAssignable type (the keys in these containers are not modifiable)
list has its own remove
Then, remove only can be used in erase remove idiom in vector and
string.