Предположительно vector
является экземпляром std::vector
, а it
является итератором элемента этого контейнера.
Учитывая два итератора произвольного доступа к одному и тому же диапазону, вычитая один из других результатов на расстоянии от одного элемента до их родного брата. Результат такой же, как если бы вы вычитали индекс одного элемента из индекса другого элемента.
Расстояние работает как числовая строка: расстояние от нижнего индекса к верхнему отрицательно.
begin
возвращает итератор для первого элемента контейнера. Индекс первого элемента равен 0. Таким образом, вычитание начального итератора из другого итератора приводит к расстоянию другого итератора от начала, которое совпадает с индексом элемента, на который указывает итератор.