#include #include #include namespace mystd { using It = std::vector::iterator; using DifferenceType = It::difference_type; /* advence: advances iterator it by n steps */ void advance(It &it, DifferenceType n) { it += n; } /* distance: returns number of steps needed to go from first to last */ DifferenceType distance(It first, It last) { auto dist = DifferenceType{0}; for (; first < last; ++dist) ++first; for (; first > last; --dist) --first; return dist; } /* next: returns next iterator */ It next(It it, DifferenceType n = 1) { return it + n; } /* prev: returns previous iterator */ It prev(It it, DifferenceType n = 1) { return it - n; } } // namespace mystd