|   Defined in header   <iterator>  |  ||
|---|---|---|
 template< class InputIt >
typename std::iterator_traits<InputIt>::difference_type 
    distance( InputIt first, InputIt last );  |  
Returns the number of elements between first and last.
|   The behavior is undefined if   |  (until C++11) | 
|   If   |  (since C++11) | 
Parameters
| first | - | iterator pointing to the first element | 
| last | - | iterator pointing to the end of the range | 
| Type requirements | ||
 - InputIt must meet the requirements of InputIterator. The operation is more efficient if InputIt additionally meets the requirements of RandomAccessIterator  |  ||
Return value
The number of increments needed to go from first to last. The value may be negative if random-access iterators are used and first is reachable from last (since C++11).
Complexity
Linear.
However, if InputIt additionally meets the requirements of RandomAccessIterator, complexity is constant.
Example
#include <iostream>
#include <iterator>
#include <vector>
 
int main() 
{
    std::vector<int> v{ 3, 1, 4 };
    std::cout << "distance(first, last) = "
              << std::distance(v.begin(), v.end()) << '\n'
              << "distance(last, first) = "
              << std::distance(v.end(), v.begin()) << '\n';
}Output:
distance(first, last) = 3 distance(last, first) = -3
See also
|  advances an iterator by given distance  (function)  |  
Please login to continue.