std::distance
Материал из 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.
Параметры
|
Если от |
(до C++11) |
|
Если |
(начиная с 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';
}
Вывод:
3
См. также
| продвигает итератор на заданное расстояние (функция) |