std::distance
|   Defined in header  <iterator>
  | 
||
|   template< class InputIt > typename std::iterator_traits<InputIt>::difference_type   | 
(until C++17) | |
|   template< class InputIt > constexpr typename std::iterator_traits<InputIt>::difference_type   | 
(since C++17) | |
Returns the number of hops from first to last.
| 
 The behavior is undefined if   | 
(until C++11) | |
| 
 If   | 
(since C++11) | |
| first | - | iterator pointing to the first element | 
| last | - | iterator pointing to the end of the range | 
| Type requirements | ||
 -InputIt must meet the requirements of LegacyInputIterator. The operation is more efficient if InputIt additionally meets the requirements of LegacyRandomAccessIterator
 | ||
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 LegacyRandomAccessIterator, 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'; //the behavior is undefined (until C++11) }
Output:
distance(first, last) = 3 distance(last, first) = -3
See also
|    advances an iterator by given distance   (function template)  | |
|    returns the number of elements satisfying specific criteria   (function template)  |