exc/udemy-cpp/exc04/IteratorLib.h

43 lines
763 B
C++

#include <cstdint>
#include <iterator>
#include <vector>
namespace mystd
{
using It = std::vector<std::int32_t>::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