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.