##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::distance

From cppreference.com
< cpp‎ | iterator

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 `last` is not reachable from `first` by (possibly repeatedly) incrementing `first`.

### [edit] Parameters

first | - | iterator pointing to the first element
last | - | iterator pointing to the last element
Type requirements
- `InputIt` must meet the requirements of `InputIterator`. The operation is more efficient if `InputIt` additionally meets the requirements of `RandomAccessIterator`

### [edit] Return value

The number of elements between `first` and `last`.

### [edit] Complexity

Linear.

However, if `InputIt` additionally meets the requirements of `RandomAccessIterator`, complexity is constant.

### [edit] Example

Run this code

    #include <iostream>
    #include <iterator>
    #include <vector>

    int main()
    {
        std::vector<int> v{ 3, 1, 4 };

        auto distance = std::distance(v.begin(), v.end());

        std::cout << distance << '\n';
    }

Output:

    3

### [edit] See also

advance | advances an iterator by given distance (function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/iterator/distance&oldid=57963"