◐ Shell
clean mode source ↗

std::distance — cppreference.com

Материал из cppreference.com

<tbody> </tbody>

Определено в заголовочном файле <iterator>

template< class InputIt > typename std::iterator_traits<InputIt>::difference_type distance( InputIt first, InputIt last );

(до C++17)

template< class InputIt > constexpr typename std::iterator_traits<InputIt>::difference_type distance( InputIt first, InputIt last );

(начиная с C++17)

Возвращает количество шагов от first до last.

.

Параметры

Если от first до last нельзя дойти, инкрементируя first, поведение не определено.

(до C++11)

Если InputIt не RandomAccessIterator, и от first до last нельзя дойти, инкрементируя first, поведение не определено. Если InputIt RandomAccessIterator, и нельзя попасть ни от first до last, ни от last до first, поведение не определено.

(начиная с C++11)
first итератор, указывающий на первый элемент
last итератор, указывающий на последний элемент
Требования к типам
-InputIt должен соответствовать требованиям InputIterator. Если InputIt удовлетворяет RandomAccessIterator, операция производится эффективнее (см. Сложность)

Возвращаемое значение

Количество инкрементов first, чтобы дойти до last. Результат может быть отрицательным, если используются RandomAccessIterator, и от last можно попасть к first (начиная с C++11)

Сложность

Линейная.

Если InputIt соответствует требованиям RandomAccessIterator, сложность константная.

Пример

#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';
}

Вывод:

См. также