43 lines
763 B
C++
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
|