template<class Init, class Dist>
ptrdiff_t distance(InIt first, InIt last);
The template function sets a count n
to zero. It then effectively advances first
and increments n
until first ==
last
. If InIt
is a random-access iterator type, the function evaluates the expression n += last - first
.
Otherwise, it performs each iterator increment by evaluating ++first
.
In this implementation, if a translator does not support partial specialization of templates, the return type is ptrdiff_t
instead of iterator_traits<InIt>::distance_type
. If you are not certain this type is adequate, use the template
function:
template<class InIt, class Dist>
void _Distance(InIt first, InIt last, Dist& n0);
which adds n
to the value stored in n0
.
See the related sample program.