std::advance
- modifies its argument
- returns nothing
- works on input iterators or better (or bi-directional iterators if a negative distance is given)
std::next
- leaves its argument unmodified
- returns a copy of the argument, advanced by the specified amount
- works on forward iterators or better (or bi-directional iterators if a negative distance is given))