I have a doubt that I would like to clarify in my head. I am aware of the different behavior for std::vector between erase and std::remove>
Yes, that's the gist of it. Note that erase is also supported by the other standard containers where its performance characteristics are different (e.g. list::erase is O(1)), while std::remove is container-agnostic and works with any type of forward iterator (so it works for e.g. bare arrays as well).