Категории итераторов в C++
Итераторы делят на категории по набору операций.
Однократный проход дают Input и output: они ориентированы на однократное чтение или запись. Forward позволяет пройти вперед и снова прочитать ту же позицию. Bidirectional добавляет шаг назад. Random-access дает сдвиг на произвольное число шагов и сравнение позиций по расстоянию.
У std::vector итератор относится к
random-access: к позиции прибавляют целое
смещение. Подключите vector и
iostream. Запишем вектор, возьмем
начало и выведем элемент через два шага вперед:
std::vector<int> v = {5, 6, 7, 8};
auto it = v.begin();
std::cout << *(it + 2) << "\n";
Смещение 2 указывает на третий элемент -
здесь это 7. Список или очередь не
дают такого приема: их итераторы слабее по
категории, зато подходят под другие задачи.
Создайте вектор из четырех последовательных
целых, начиная с 0. Напечатайте
элемент, который стоит на 3 шага
вперед от первой позиции, не меняя
переменную итератора на начале.