Top of document
©Copyright 1999 Rogue Wave Software

distance_type


     Iterator primitive

Summary

Determine the type of distance used by an iterator.

Contents

Synopsis

#include <iterator>
template <class T, class Distance> 
inline Distance* distance_type (const input_iterator<T,
      Distance>&)
template <class T, class Distance> 
inline Distance* distance_type (const forward_iterator<T,
      Distance>&)
template <class T, class Distance> 
inline Distance* 
distance_type (const bidirectional_iterator<T, Distance>&)
template <class T, class Distance>
inline Distance* 
distance_type (const random_access_iterator<T, Distance>&)
template <class T>
inline ptrdiff_t* distance_type (const T*)

Description

The distance_type family of function templates return a pointer to a value that is of the same type as that used to represent a distance between two iterators. The first four of these take an iterator of a particular type and return a pointer to a default value of the distance_type for that iterator. The T* form of the function returns ptrdiff_t*.

Generic algorithms use this function to create local variables of the correct type. The distance_type functions are typically used like this:


template <class Iterator>
void foo(Iterator first, Iterator last)
{
  __foo(begin,end,distance_type(first));
}
template <class Iterator, class Distance>
void __foo(Iterator first, Iterator last, Distance*>
{
  Distance d = Distance();
  distance(first,last,d);
  _
}

The auxiliary function template allows the algorithm to extract a distance type from the first iterator and then use that type to perform some useful work.

See Also

Other iterator primitives: value_type, iterator_category, distance, advance


Top of document