
Iterator Operation
Computes the distance between two iterators
#include <iterator>
template <class InputIterator, class Distance>
void distance (InputIterator first,
InputIterator last,
Distance& n);
The distance template function computes the distance between two iterators and stores that value in n. The last iterator must be reachable from the first iterator.
distance increments n by the number of times it takes to get from first to last. distance must be a three argument function that stores the result into a reference instead of returning the result, because the distance type cannot be deduced from built-in iterator types such as int*.
//
// 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>(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
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>
instead of:
vector <int>
Sequences, Random Access Iterators