Пространства имён
Варианты
Действия

std::distance

Материал из cppreference.com
< cpp‎ | iterator
 
 
Iterator библиотеки
Iterator примитивов
Оригинал:
Iterator primitives
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
iterator_traits
input_iterator_tag
output_iterator_tag
forward_iterator_tag
bidirectional_iterator_tag
random_access_iterator_tag
iterator
Iterator адаптеров
Оригинал:
Iterator adaptors
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
reverse_iterator
Поток итераторы
Оригинал:
Stream iterators
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
istream_iterator
ostream_iterator
istreambuf_iterator
ostreambuf_iterator
Iterator операций
Оригинал:
Iterator operations
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
advance
distance
prev(C++11)
next(C++11)
Диапазон доступа
Оригинал:
Range access
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
begin(C++11)
end(C++11)
 
Определено в заголовочном файле <iterator>
template< class InputIt >

typename std::iterator_traits<InputIt>::difference_type

    distance( InputIt first, InputIt last );
template< class InputIt >

constexpr typename std::iterator_traits<InputIt>::difference_type

    distance( InputIt first, InputIt last );

Возвращает количество шагов от 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';
}

Вывод:

3

[править] См. также

продвигает итератор на заданное расстояние
Оригинал:
advances an iterator by given distance
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]