VMS Help
CXXLSTD, Algorithms, distance

 *Conan The Librarian

 			   Standard C++	Library
 		 Copyright 1996, Rogue Wave Software, Inc.

 NAME

   distance  - Computes the distance between two	iterators

 SYNOPSIS

   #include <iterator>

   template <class ForwardIterator>
   iterator_traits<ForwardIterator>::distance_type
   distance (ForwardIterator first,
 		 ForwardIterator last);

   template <class ForwardIterator, class Distance>
   void distance	(ForwardIterator first,
 		 ForwardIterator last,
 		 Distance& n);

 DESCRIPTION

   The distance template	function computes the distance between two
   iterator. The first version returns that value,	while the
   second version increments  n by that value.  The last iterator must
   be reachable from the first  iterator.

   Note that the	second version of this function	is obsolete.  It is
   provided for backward compatibility and to support compilers that do
   not provide partial specialization.  As you may have already
   deduced,  the	first version of the function is not available with
   compilers  that do not support partial specialization since it
   depends on  iterator_traits, which itself depends on that particular
   language  feature.

 EXAMPLE

   //
   // distance.cpp
   //

    #include <iterator>
    #include <vector>
    #include <iostream.h>
   int main()
    {
      //
      //Initialize a vector using an array
      //
     int	arr[6] = {3,4,5,6,7,8};
     vector<int>	v(arr,arr+6);
      //
      //Declare a list iterator,	s.b. a ForwardIterator
      //
     vector<int>::iterator itr =	v.begin()+3;
      //
      //Output the original vector
      //
     cout << "For the vector: ";
     copy(v.begin(),v.end(),
 	 ostream_iterator<int,char>(cout," "));
     cout << endl << endl;

     cout << "When the iterator is initialized to point to "
 	  << *itr << endl;
      //
      //	Use of distance
      //
     vector<int>::difference_type dist =	0;
     distance(v.begin(),	itr, dist);
     cout << "The distance between the beginning	and itr	is "
 	  << dist << endl;
     return 0;
    }

   Output :
   For the vector: 3 4 5	6 7 8
   When the iterator is initialized to point to 6
   The distance between the beginning and itr is	3

 WARNING

   If your compiler does	not support default template parameters	then
   you need to always supply the Allocator template argument. For
   instance you'll	have to write:

   vector <int, allocator,int> >	instead	of:

   vector <int>

   Also,	if your	compiler does not support partial specialization  then
   you will not be able to use the version of distance that returns
   the distance.  Instead you'll have to use the version that
   increments  a reference parameter.

 SEE ALSO

   sequence, random_iterator

 STANDARDS CONFORMANCE
   ANSI X3J16/ISO WG21 Joint C++	Committee
  Close     Help