Что это делает - vector.begin () на самом деле? - PullRequest
0 голосов
/ 29 апреля 2020

Итак, из того, что я узнал, чтобы получить положение итератора в векторе, мы делаем это:

it - vector.begin();

Может кто-нибудь объяснить, что делает этот минус «на самом деле»?

1 Ответ

3 голосов
/ 29 апреля 2020

Предположительно vector является экземпляром std::vector, а it является итератором элемента этого контейнера.

Учитывая два итератора произвольного доступа к одному и тому же диапазону, вычитая один из других результатов на расстоянии от одного элемента до их родного брата. Результат такой же, как если бы вы вычитали индекс одного элемента из индекса другого элемента.

Расстояние работает как числовая строка: расстояние от нижнего индекса к верхнему отрицательно.

begin возвращает итератор для первого элемента контейнера. Индекс первого элемента равен 0. Таким образом, вычитание начального итератора из другого итератора приводит к расстоянию другого итератора от начала, которое совпадает с индексом элемента, на который указывает итератор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...